嗨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)循环,但我认为有一些更好的方法来做到这一点。我知道这也会导致唯一性验证错误失败,但我只是想知道如何完成。
有什么想法?
你有没有在你的评论模型中尝试一个简单的'validates_uniqueness_of:comment'? – shingara 2012-03-12 08:33:43
是的。我想使用:reject_if除了validates_uniqueness_of。使用批量分配,可以一次创建数百个条目,但验证错误会抛出整个分配。 :reject_if从参数散列中删除空白attributes_for,我希望类似于唯一性约束。 (我昨天想过这件事,它也可以通过before_validation回调来完成) – Tsagadai 2012-03-13 01:18:00