Rails:如果所有属性都为空,如何删除“accepts_nested_attributes_for”上的关联模型?

时间:2014-02-04 20:34:16

标签: ruby-on-rails

我有Book模型,接受_ented_attributes_for book_versions

class Book < ActiveRecord::Base

  has_many :book_versions, dependent: :destroy
  accepts_nested_attributes_for :book_versions
  validates_associated :book_versions

当用户创建具有关联图书版本的图书时,它可以正常工作。但是,当用户编辑书籍时,它也不起作用。我希望它能够在用户编辑书籍时清除book_versions的所有嵌套表单字段,以便删除书籍版本。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以尝试在BookVersion模型中添加一个保存后回调,如果为空则会破坏记录。勾勒出来。

class BookVersion < ActiveRecord::Base
   after_save :delete_if_empty_attr

   def delete_if_empty_attr
     if foo.empty? && bar.empty?
       self.destroy
     end
   end
end

答案 1 :(得分:0)

accepts_nested_attributes_for :book_versions, reject_if: :all_blank

来源:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html