Validates_Sassied модель с условием
-
27-09-2019 - |
Вопрос
У меня есть следующие 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