ActiveRecord似乎定義了不同於attr_accessor的實例方法。與attr_accessor相比,ActiveRecord如何定義方法?
attr_accessor似乎並沒有定義一個超級法我的新定義的屬性:
class SomeClass
attr_accessor :some_attribute
def some_attribute
super
end
end
>> some_class = SomeClass.new
>> some_class.some_attribute
NoMethodError: super: no superclass method `some_attribute' for..
而ActiveRecord的絕對定義了一個超級法:
class SomeClass < ActiveRecord::Base
# some_attribute is now a column in our database
def some_attribute
super
end
end
>> some_class = SomeClass.new
>> some_class.some_attribute
nil
哪裏差兩者之間?有沒有辦法讓attr_accessor定義一個超級方法?
編輯: 我還是不知道的ActiveRecord如何定義它的方法,但我知道attr_accessor是怎麼做的。取而代之的super
我可以用@some_attribute
因爲它存儲在同名的全局變量的值:由https://stackoverflow.com/a/4371458/586000