Modelo validado_associado com condição
-
27-09-2019 - |
Pergunta
Eu tenho o seguinte cenário validados_associados
class Parent
include Mongoid::Document
validates_associated :son
validates_associated :daughter
end
Quando crio um pai, um filho ou filha é criado não apenas ambos. Agora, meu problema é que, quando tento criar pais com filho, a validação falha devido à validação da filha e vice -versa.
Existe alguma maneira de validar apenas o filho quando os parâmetros do filho são publicados ou ou validar apenas a filha quando os parâmetros da filha são postados
Obrigado
Solução
Você pode fornecer um: se a opção e testar se o documento associado existir:
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
Outras dicas
Por que você não usa um objeto infantil associado, que tem um atributo (ou seja, gender
) se está sendo um filho ou uma filha.
Child
modelo (homem ou mulher, dependendo do valor em 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
estará incorporado em Parent
modelo:
class Parent
include Mongoid::Document
embeds_one :child
validates_associated :child
end