je ceci:Initialiser un module mixte pour un modèle
class Bullet < ActiveRecord::Base
include StagedVersionMethods
...
end
Et ce
module StagedVersionMethods
def initialize
puts self.bullet_id
end
end
Lorsque je crée une instance de Bullet, les modules initialize feux de méthode, mais je reçois un ActiveRecord erreur: ... activerecord-2.2.2/lib/enregistrement_actif/attribute_methods.rb: 268: dans `read_attribute '
Mon intention est d'initialiser une variable d'instance pour laquelle j'ai besoin de la prima ry valeur clé de l'enregistrement que je mélange dans. D'autres méthodes dans le module fonctionneront alors avec cette variable d'instance.
Le module included() callback ne correspond pas non plus à la tâche, car self, dans ce contexte, est le module et non l'enregistrement AR.
Comment cela devrait-il être abordé?
Merci
Merci Shadwell, La variable d'instance sera une copie de l'instance « soi », mais avec des modifications ont été apportées. Il représente une copie temporaire de la puce "parent", et le module va mélanger des méthodes au MOdel - des méthodes comme has_temp_version ?, apply_temp_version, discard_temp_version et autres. J'ai essayé l'approche que vous avez suggérée (ce qui est parfaitement logique) mais les attributs de self, y compris bullet_id, sont tous nuls. J'utilise votre deuxième suggestion actuellement et cela fonctionne bien - juste un peu plus de plomberie que j'aurais aimé. Salutations – Paul