0

Does anyone know why in Rails 4.x, the ||= operator doesn't seem to work properly with defaulting Strings.

fails:

self.scheme ||= "https"

with an error of:

NoMethodError:
undefined method `scheme' for

works:

after_initialize :apply_defaults

def apply_defaults
    #remote Docker daemons use HTTPS by default
    self.scheme
    #default port for docker daemons
    self.port ||= 2376
end

#for some reason, can't use ||= and need a real method
def scheme
    self[:scheme] || 'https'
end

why is it that to have a default string I need a method, but the port (integer) does not?

source: How to set default values in Rails?

Community
  • 1
  • 1
roguequery
  • 964
  • 13
  • 28

0 Answers0