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

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top