after_save未使用accept_nested_attributes_for中更新的habtm参数触发

时间:2018-07-16 14:21:05

标签: ruby-on-rails ruby-on-rails-4

class Itema< ActiveRecord::Base
  accepts_nested_attributes_for :itemb
end

class Itemb < ActiveRecord::Base
  has_and_belongs_to_many :platforms, join_table: "platforms_itembs"
  after_save :check_validity # not called.
end

class ItemaController < ApplicationControllerclass
  def update
    # params are "itema"=>{"id"=>"5", "name"=>"my_item_a", "itemb_attributes"=>{"0"=>{"id"=>"3", "name"=>"my_item_b", "platform_ids"=>["15", "16", "17"]}}}

    respond_to do |format|
      if @itema.update(params)
          format.html { redirect_to @itema }
      end
  end
end

当我从Itemb的表单更新Itema的平台属性时,Itemb的平台更新得很好,但是after_save未被触发。但是,如果我还更改了itemb的名称,则会触发after_save。如果我仅更新platform属性,我会无法触发after_save吗?

0 个答案:

没有答案