你好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),但我认为有更好的方法可以做到这一点。我知道这也会导致唯一性验证错误无声地失败,但我只是想知道它是如何完成的。
有什么想法吗?
答案 0 :(得分:0)
答案在这里的相关专栏中有一半:validates_uniqueness_of in destroyed nested model rails
可以修改验证以不添加错误但拒绝错误数据。这将通过嵌入式模型中的唯一性验证,同时剥离重复项(带有已完成的消息)。