Как ActiveRecord определяет методы по сравнению с attr_accessor?
ActiveRecord, похоже, определяет методы экземпляра иначе, чем attr_accessor.
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 определяет этоs методы, но я знаю, как это делает attr_accessor. Вместоsuper
я могу использовать@some_attribute
поскольку он хранит значения в глобальных переменных с тем же именем:https://stackoverflow.com/a/4371458/586000