当ActiveAdmin关联没有变化时,如何在关联模型上触发回调

时间:2017-04-11 02:49:16

标签: ruby-on-rails ruby activeadmin

我在Rails 5中使用activeadmin。我有以下关联。

class Manager < ApplicationRecord
  has_many :employees
  accepts_nested_attributes_for :employees, :allow_destroy => true
end

class Employee < ApplicationRecord
  belongs_to :manager

  after_save :do_something
end

我的表格看起来像这样:

tabs do 
  tab 'Details' do 
    f.inputs do
      input :name
      input :current_address
      input :email_address
    end 
  end

  tab 'Employees' do 
    f.has_many :employees, heading: false, allow_destroy: true do |employee|
      input :name
      input :experience
      input :email_address
    end
  end
end

在经理编辑页面上,如果我只编辑经理详细信息而不是员工详细信息,则不会触发员工模型上的after_save回调,这是有意义的。但有没有办法可以强制触发员工模型的回调,即使员工的详细信息没有改变?

1 个答案:

答案 0 :(得分:0)

如何在Manager模型中使用after_save方法来触发Employee模型中的回调?

class Manager < ApplicationRecord
  has_many :employees
  accepts_nested_attributes_for :employees, :allow_destroy => true

  after_save :update_employees

  def update_employees
    employees.each {|m| m.update_attributes()}
  end

end