是否有覆盖所有可写 ActiveRecord 关联方法的行为?例如,我有一个名为“Request”的模型,如下所示:
class Request < ActiveRecord::Base
has_many :line_items
end
Request 模型有一个名为“status”的字段。如果状态不是“草稿”,我希望 line_items 关系的所有可写 ActiveRecord 关联方法都抛出异常。我知道我可以单独覆盖它们,如下所示:
class Request < ActiveRecord::Base
has_many :line_items
def line_items=(args)
if status != 'DRAFT'
raise Exception.new "cannot edit a non-draft request"
else
write_attribute :line_items, args
end
end
end
但是,ActiveRecord 为这些关联创建了很多方法(请参阅http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html上的“自动生成的方法” )。
谢谢你的帮助。