0
有没有办法覆盖所有可写的ActiveRecord关联方法的行为?例如,我有一个名为“请求”这样的模式:如何防止添加/删除记录到基于另一个字段的活动记录关联?
class Request < ActiveRecord::Base
has_many :line_items
end
的请求模型有一个名为“状态”栏。如果状态不是“DRAFT”,我希望line_items关系的所有可写入ActiveRecord关联方法都会引发异常。我知道我可以indivdually覆盖它们,就像这样:
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“自动生成的方法”)。
感谢您的任何帮助。