Я создаю модуль, подобный приведенному ниже, но получаю ошибку «неопределенного метода» в вызове метода self.attributes. Я уверен, что я пропустил что-то простое, но не вижу его. Любое руководство будет принята с благодарностью!Получить значения атрибутов объекта из методов модуля
module TestModule
def self.included(base)
base.extend(ClassMethods)
base.extend(InstanceMethods)
end
module InstanceMethods
def mon_mothma
self.attributes.each do |key, value|
admiral_ackbar(key)
end
end
end
module ClassMethods
def admiral_ackbar(key)
self.send("#{key}=", value)
end
end
end
ActiveRecord::Base.send(:include, TestModule)
Где определяется метод 'attributes'? –
Я думаю, что метод атрибутов определен в классе ActiveRecord, хотя я не смог это подтвердить. Я знаю, если вы создаете экземпляр объекта ActiveRecord, тогда атрибуты - это метод экземпляра объекта. Это помогает? –
Я думаю, что это должно быть 'base.include (InstanceMethods)' как 'extend' будет делать эти методы класса (например, вы делаете с ClassMethods), а' attributes' не является методом класса. – engineersmnky