一个模块我有这样的:初始化混合的模式
class Bullet < ActiveRecord::Base
include StagedVersionMethods
...
end
这
module StagedVersionMethods
def initialize
puts self.bullet_id
end
end
当我创建子弹的实例,该模块初始化方法火灾,但我得到一个ActiveRecord错误: ...的ActiveRecord-2.2.2/lib目录/ active_record/attribute_methods.rb:268:在`read_attribute”
我的意图是初始化,我需要的初步实例变量我正在混合的记录的关键值。然后模块中的其他方法将使用这个实例变量。
模块包含()回调不适合任务,因为在这种情况下,self是模块而不是AR记录。
应该如何接近?
感谢
谢谢沙德韦尔 实例变量将是实例“自我”的副本,但它所做的编辑。它代表“父母”项目符号的临时副本,并且该模块将在方法中混入MOdel - has_temp_version,apply_temp_version,discard_temp_version等方法。 我尝试了你建议的方法(这非常合理),但是包括bullet_id在内的自我属性都是零。 我现在正在使用你的第二个建议,这工作正常 - 只比我想要的多一点管道。 干杯 – Paul 2009-06-15 16:54:02