我有一個用戶模型這行代碼:滑軌:在設定器的Attr存取未定義的方法
attr_accessor :birthdate
在相同的模型,我有嘗試通過這樣來設置的出生日期的方法:
self.birthdate = mydate
其中mydate是Date對象。
我得到這個錯誤:undefined method birthdate='
這究竟是爲什麼?是不是attr_accessor創建一個setter和一個getter?
我有一個用戶模型這行代碼:滑軌:在設定器的Attr存取未定義的方法
attr_accessor :birthdate
在相同的模型,我有嘗試通過這樣來設置的出生日期的方法:
self.birthdate = mydate
其中mydate是Date對象。
我得到這個錯誤:undefined method birthdate='
這究竟是爲什麼?是不是attr_accessor創建一個setter和一個getter?
讓我猜,你從類方法調用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)
正是我在找的東西。 – 2012-04-12 23:25:32
你去那裏,upvote的猜測! – shime 2012-04-12 23:37:12
重現問題的完整代碼 – 2012-04-12 23:20:26