我有一个模型层次结构,我正在尝试级联一个 :touch 事件。
class Category < ActiveRecord::Base
has_many :posts
after_touch :do_stuff
def do_stuff
# do stuff...
end
end
class Post < ActiveRecord::Base
belongs_to :category, :touch => true
has_many :comments, :dependent => :destroy
end
class Comment < ActiveRecord::Base
belongs_to :post, :touch => true
end
我有一个 Post 表单,它通过 nesteed_attributes 创建一个新评论。当此事件发生时,Category 类上的 after_touch 方法会快速连续触发 4 次(相隔毫秒),我有点不明白为什么。
在我看来,回调应该只为交易触发一次?我还注意到,在诸如销毁帖子之类的事件中,会为该帖子触发回调,并且每个评论都被销毁,从而导致多对多调用。
这是正常行为吗?是预期的吗?有没有解决的办法?这是Rails中的错误吗?