Ruby on rails Rails 3有很多变化吗?
我需要跟踪如下设置的关联的更改(添加和删除):Ruby on rails Rails 3有很多变化吗?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,has-many,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Has Many,我需要跟踪如下设置的关联的更改(添加和删除): has_many :listing_services has_many :services, through: :listing_services 对于普通属性,最简单的方法是在保存前检查l.changes[属性],或在保存后检查中的l.changes[属性] 问题是,对于有许多属性的来说,最好的方法是什么?我没有使用更改方法。但我相信你总是可以使用神奇的方法 更新:您可以在删除后传递,:在添加回调到后直接关联多个: has_many :item
has_many :listing_services
has_many :services, through: :listing_services
对于普通属性,最简单的方法是在保存前检查l.changes[属性]
,或在保存后检查中的l.changes[属性]
问题是,对于有许多属性的来说,最好的方法是什么?我没有使用更改方法。但我相信你总是可以使用神奇的方法
更新:您可以在删除后传递,:在添加回调到后直接关联多个:
has_many :items, :after_add => :my_method_or_proc1, :after_remove => :my_method_or_proc2
使用这些回调时要小心,并注意它们是如何工作的。它们
对项调用。生成和项。创建一次。所以如果你打电话
项。生成
,然后保存父对象(具有用于
示例)after\u add
回调将在构建时仅调用一次
关联对象。这意味着,如果父项具有验证,则生成的项
将不会保存在数据库中,并且您不能依赖添加后的回调。换句话说,它并没有说添加的关联的记录保存在数据库中。因此,您必须保证项目仅在呼叫时添加和保存项目。创建。我希望您能理解这一澄清。对于我来说,这只适用于更新关联对象的情况。如果添加或删除了关联的对象(从那时起,services
关联中不再存在该对象),则它对我不起作用。我做错了什么?
has_many :items, :after_add => :my_method_or_proc1, :after_remove => :my_method_or_proc2