Hom*_*ith 4 ruby setter ruby-on-rails attr-accessor
我在User模型中有这行代码:
attr_accessor :birthdate
Run Code Online (Sandbox Code Playgroud)
在同一个模型中,我有一个方法试图通过这样做来设置该生日:
self.birthdate = mydate
Run Code Online (Sandbox Code Playgroud)
其中mydate是Date对象.
我收到此错误: undefined method birthdate='
为什么会这样?是不是attr_accessor创建了一个setter和一个getter?
Ser*_*sev 18
让我猜一下,你是从类方法中调用setter,对吧?
class Foo
attr_accessor :bar
def set_bar val
self.bar = val # `self` is an instance of Foo, it has `bar=` method
bar
end
def self.set_bar val
self.bar = val # here `self` is Foo class object, it does NOT have `bar=`
bar
end
end
f = Foo.new
f.set_bar 1 # => 1
Foo.set_bar 2 # =>
# ~> -:10:in `set_bar': undefined method `bar=' for Foo:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5678 次 |
| 最近记录: |