Rails:如何在accept_nested_attributes_for上保存父级的子记录?

时间:2014-02-04 21:53:20

标签: ruby-on-rails

我在我的孩子模型上回电话没有被叫出来:

书(父)模型:

has_many :book_versions, dependent: :destroy
accepts_nested_attributes_for :book_versions, reject_if: :all_blank

BookVersion(孩子)模特:

belongs_to :book
after_save :destroy_self_if_invalid


def destroy_self_if_invalid
  self.destroy if (isbn.blank? || price.blank?)
end

我正在尝试这样做,以便当用户转到父窗体并清除嵌套的表单字段时,子记录会自行删除。但是,当我提交form_for @book时,我的回调没有被触发,我认为是因为它通过父节点间接地保存了孩子而没有点击BookVersion模型。

我正在寻找类似touch: truehas_many关联的内容,而不是belongs_to

1 个答案:

答案 0 :(得分:0)

我刚刚将回调移至Book而不是BookVersion

after_save :delete_invalid_book_versions

def delete_invalid_book_versions
  book_versions.each do |book_version|
    book_version.destroy if book_version.price.blank?
  end
end