我有以下validates_associated场景
class Parent
include Mongoid::Document
validates_associated :son
validates_associated :daughter
end
当我创建父母时,儿子或女儿的任何一个都不会同时创建。 现在我的问题是,当我尝试用子创建父级时,验证因子女验证而失败,反之亦然。
有什么方法可以在张贴儿子参数时只验证儿子,或者在张贴女儿参数时仅验证女儿
由于
答案 0 :(得分:4)
您可以提供:if选项并测试相关文档是否存在:
class Parent
include Mongoid::Document
validates_associated :son, :if => Proc.new { |p| p.son.present? }
validates_associated :daughter, :if => Proc.new { |p| p.daughter.present? }
end
答案 1 :(得分:3)
为什么不使用具有属性(即gender
)的关联子对象,如果它是儿子或女儿。
Child
模型(男性或女性,取决于gender
中的值):
class Child
include Mongoid::Document
field :gender, :type => Symbol
# and more fields as you probably want
embedded_in :parent, :inverse_of => :child
# your validation code
def son?
gender == :male
end
def daughter?
gender == :female
end
end
将嵌入Parent
模型:
class Parent
include Mongoid::Document
embeds_one :child
validates_associated :child
end