Вопрос

У меня есть следующие Validates_sassocied сценарий

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

Когда я создаю родителя, либо сына, либо дочь созданы только не обоим. Теперь моя проблема в том, что когда я пытаюсь создать родитель с сыном, то валидация не удается из-за валидации дочери и наоборот.

Есть ли способ, которым я могу подтвердить только сын, когда параметры сына размещены или проверяют только дочь, когда размещены параметры дочери

Спасибо

Это было полезно?

Решение

Вы можете поставить следующую опцию и тестировать, если связанный документ существует:

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

Другие советы

Почему бы вам не использовать связанный дочерний объект, который имеет атрибут (т.е. 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top