使用:reject_if来测试唯一性

时间:2012-03-12 00:20:05

标签: mongoid nested-forms

你好stackoverflowers,

我一直在使用嵌入式模型的 accepts_nested_attributes_for 。对于质量赋值和ryanb的嵌套形式宝石,实际上是必需的。通常,它使用lambda函数来验证参数哈希,因此如果用户没有输入任何输入,质量分配不会因验证错误而失败(同时仍然有效)。

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是在验证之前从参数中删除空白。我想做的是使用validates_uniqueness_of和lambda块来评估唯一性。

我可以遍历评论(self.comments),但我认为有更好的方法可以做到这一点。我知道这也会导致唯一性验证错误无声地失败,但我只是想知道它是如何完成的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

答案在这里的相关专栏中有一半:validates_uniqueness_of in destroyed nested model rails

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