3

次の validates_associated シナリオがあります

class Parent
  include Mongoid::Document
  validates_associated :son
  validates_associated :daughter
end

親を作成すると、息子または娘のどちらかだけが作成され、両方は作成されません。今私の問題は、息子と一緒に親を作成しようとすると、娘の検証のために検証が失敗し、その逆も同様です。

息子のパラメーターが投稿されたときに息子のみを検証する方法、または娘のパラメーターが投稿されたときに娘のみを検証する方法はありますか

ありがとう

4

2 に答える 2

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
于 2010-11-02T21:05:23.997 に答える
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
于 2010-08-11T12:51:54.263 に答える