我在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

在“经理编辑”页面上,如果我只编辑经理详细信息而不是员工详细信息,则不会触发员工模型上的“保存后”回调,这是有意义的但是,有没有一种方法可以强制在雇员模型上触发回调,即使雇员的详细信息没有更改?

最佳答案

在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

关于ruby-on-rails - ActiveAdmin关联未更改时如何触发关联模型的回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43335961/

10-15 09:32