2012-03-12 60 views
0

嗨stackoverflowers。对于批量分配和ryanb的嵌套表格宝石,它实际上是必需的。通常,使用lambda函数来验证参数散列,因此,如果用户未放置任何输入,则质量分配不会因验证错误而失败(仍然有效)。使用:reject_if</p> <p>我一直在使用<strong>accepts_nested_attributes_for</strong>用了一段时间的嵌入式模型来测试独特

class User 
    include Mongoid::Document 
    embeds_many :comments 
    accepts_nested_attributes_for :comments, :reject_if => lambda { |c| c[:comment].blank? } 
end 

class Comment 
    include Mongoid::Document 
    embeds_in :user 

    fields :comment 

    validates_presence_of :comment 
end 

这是什么,我假设,用:reject_if是从验证的参数中删除空白。我想要做的就是评估uniqueness以及validates_uniqueness_of和lambda块。

我可以通过评论(self.comments)循环,但我认为有一些更好的方法来做到这一点。我知道这也会导致唯一性验证错误失败,但我只是想知道如何完成。

有什么想法?

+0

你有没有在你的评论模型中尝试一个简单的'validates_uniqueness_of:comment'? – shingara 2012-03-12 08:33:43

+0

是的。我想使用:reject_if除了validates_uniqueness_of。使用批量分配,可以一次创建数百个条目,但验证错误会抛出整个分配。 :reject_if从参数散列中删除空白attributes_for,我希望类似于唯一性约束。 (我昨天想过这件事,它也可以通过before_validation回调来完成) – Tsagadai 2012-03-13 01:18:00

回答

0

答案是一半在有关此列一路下滑:validates_uniqueness_of in destroyed nested model rails

验证可以被修改为不添加错误,但拒绝错误数据。这将通过嵌入式模型中的唯一性验证,同时删除重复项(使用已完成的消息)。

+0

如何修改验证以简单地拒绝不良数据,而不会阻塞其余的操作? – 2014-04-21 18:19:36

相关问题