Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何在接受\u嵌套的\u属性\u时触摸父存储上的子记录?_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:如何在接受\u嵌套的\u属性\u时触摸父存储上的子记录?

Ruby on rails Rails:如何在接受\u嵌套的\u属性\u时触摸父存储上的子记录?,ruby-on-rails,Ruby On Rails,我有一个关于我的孩子模型的电话,但没有被呼叫: 图书(母版)模型: 图书版本(子)模型: 我试图这样做,当用户转到父窗体并清除嵌套的窗体字段时,子记录会删除自身。然而,当我提交@book的表单_时,我的回调没有被触发,我认为这是因为它通过父对象间接地保存了子对象,而没有命中BookVersion模型 我正在寻找类似于touch:true的东西,但是在上有很多关联,而不是所属的我只是将回调移到Book,而不是BookVersion: after_save :delete_invalid_book_

我有一个关于我的孩子模型的电话,但没有被呼叫:

图书(母版)模型:

图书版本(子)模型:

我试图这样做,当用户转到父窗体并清除嵌套的窗体字段时,子记录会删除自身。然而,当我提交@book的表单_时,我的回调没有被触发,我认为这是因为它通过父对象间接地保存了子对象,而没有命中BookVersion模型


我正在寻找类似于
touch:true
的东西,但是在
上有很多关联,而不是
所属的
我只是将回调移到
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
belongs_to :book
after_save :destroy_self_if_invalid


def destroy_self_if_invalid
  self.destroy if (isbn.blank? || price.blank?)
end
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