2011-02-10 159 views
10

我有accepts_nested_attributes_for忽略空白值

class Profile 
    has_many :favorite_books, :dependent => :destroy 
    has_many :favorite_quotes, :dependent => :destroy 

    accepts_nested_attributes_for :favorite_books, :allow_destroy => true 
    accepts_nested_attributes_for :favorite_quotes, :allow_destroy => true 
end 

我已经在按“+”添加新的文字区域用于创建新的收藏夹一个动态的形式。 我想要做的是忽略空白的,我发现这比在非嵌套属性中更难以在更新控制器中进行排序。

我暂时是在after_save回调中删除空记录的黑客。什么是最忽略这些空白对象的方式?

我不想验证和错误,只是一个沉默的删除/忽略。

回答

23

有一个内置的验证:

:reject_if => lambda { |c| c[:name].blank? }, 
+0

大尖apneadiving,谢谢!我发现这一点(对于其他人阅读)“你也可以设置:reject_if proc默默地忽略任何新的记录哈希,如果它们不能通过你的标准。例如,前面的例子可以改写为:” - http: //api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html – Mike 2011-02-10 23:24:17