我有一个模型层次结构,我正在尝试级联a: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中的错误吗?
答案 0 :(得分:2)
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
has_many :comments, :dependent => :destroy
end
class Comment < ActiveRecord::Base
belongs_to :post
end
posts_controller
def update
...
if @post.update
@post.category.touch
else
...
end
end
答案 1 :(得分:1)
目前看来这是Rails中的'设计'。似乎也没有立即改变这一点的计划,所以目前如果您计划使用:触摸并且只需要一次回调,您需要查看另一个选项。