ruby-on-rails - 如何通过关联在 has_many 中使用回调?

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

我有一个通过 has_many 关联到项目模型的任务模型,需要在通过关联删除/插入之前操作数据。
由于“Automatic deletion of join models is direct, no destroy callbacks are triggered. ”,我不能为此使用回调。
在任务中,我需要所有的 project_ids 来计算任务保存后的项目值。
如何通过关联禁用删除或更改删除以在 has_many 上销毁?
这个问题的最佳实践是什么?

class Task
  has_many :project_tasks
  has_many :projects, :through => :project_tasks

class ProjectTask
  belongs_to :project
  belongs_to :task

class Project
  has_many :project_tasks
  has_many :tasks, :through => :project_tasks

最佳答案

似乎我必须使用 associations callbacks before_add , after_add , before_removeafter_remove

class Task
  has_many :project_tasks
  has_many :projects, :through => :project_tasks, 
                      :before_remove => :my_before_remove, 
                      :after_remove => :my_after_remove
  protected

  def my_before_remove(obj)
    ...
  end

  def my_after_remove(obj)
    ...
  end
end   

关于ruby-on-rails - 如何通过关联在 has_many 中使用回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597878/

相关文章:

ruby-on-rails - rSpec 与 Shoulda 混淆

java - 为什么要使用回调方法进行多态

Ruby:如何通过继承 Hook 回调

ruby-on-rails - 在 Linux 上运行的 Rails 和 https (ssl)

ruby-on-rails - find_or_initialize_by方法的Rails弃用警告

sql - Rails 中相乘的列的总和

ruby-on-rails-3 - 提示音后让 twilio 留言

windows - JRuby on Rails 无法与在 Windows Server 2008 上作为服务运行的 Tomcat 一起使用

ruby-on-rails-3 - 环境与 WickedPDF 和 Heroku 冲突

php - 将变量传递给回调 PHP