Ich baue ein Modul wie das folgende, aber ich erhalte einen 'undefinierten Methode' Fehler beim Methodenaufruf von self.attributes. Ich bin sicher, ich vermisse etwas Einfaches, kann es aber nicht sehen. Jede Anleitung würde sehr geschätzt werden!Erhalte die Werte der Attribute eines Objekts aus den Modulmethoden
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)
Wo ist die 'attributes' Methode definiert? –
Ich denke, die Attributsmethode ist in der ActiveRecord-Klasse definiert, obwohl ich dies nicht bestätigen konnte. Ich weiß, wenn Sie ein ActiveRecord-Objekt instanziieren, dann ist Attribute eine Instanzmethode für das Objekt. Hilft das? –
Ich denke, es sollte 'base.include (InstanceMethods)' als 'extend' werden diese Klassenmethoden (wie Sie mit ClassMethods tun) und' attributes' ist keine Klassenmethode. – engineersmnky