ruby-on-rails - ruby on has_many :through上的after_remove,after_add回调

标签 ruby-on-rails model callback has-many-through

我有一个适合以下模式的模型:

class foo < ActiveRecord::Base

  has_many :bar, :dependent => :destroy

  has_many :baz, :through => :bar, :uniq => true,
    :after_add => :update_baz_count,
    :after_remove => :update_baz_count

  def update_baz_count(record)
    debugger
    # stuff...
  end
end

我试图通过bar来保持与foo相关的唯一baz的计数。但是由于某种原因,当我在foo中添加一个bar(必须有一个baz)时,永远不会调用after_add和after_remove回调。有什么想法吗?我已经将这些回调与habtm一起使用,并且它们可以正常工作。

谢谢。

最佳答案

请注意,使用after_destroy时,关联实体上不会触发has_many :through回调

从Rails文档中:

If the :through option is true callbacks in the join models are triggered except destroy callbacks, since deletion is direct.



您应该坚持添加/删除回调,只需确保仅声明一次关联即可。

关于ruby-on-rails - ruby on has_many :through上的after_remove,after_add回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248846/

相关文章:

ruby-on-rails - ruby rails : Cucumber: how do I test if a link opens in a new window/tab?

ruby-on-rails - Guard Rspec :cli option is deprecated, 更改为 :cmd 选项

javascript - 在Asp.net Mvc中隐藏字段值无法访问

javascript - setTimeout(..0) 排序

javascript - 在 jQuery 中使用回调函数

html - 如何删除 Bootstrap 3 链接之间的间距?

ruby-on-rails - 如何根据操作使 before_filter 函数表现不同?

asp.net-mvc - 参数名称必须是model吗?

java - 使用 Sesame 中的一组谓词达到相同的对象

javascript - jQuery 动画回调 + 主干 : Cannot call method 'remove' of undefined