我在我的孩子模型上回电话没有被叫出来:
书(父)模型:
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: true
但has_many
关联的内容,而不是belongs_to
答案 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