Pregunta

Quiero omitir una validación después de crear un objeto. Tomemos un ejemplo

La persona tiene muchas empresas y compañía tiene muchas personas

La persona tiene muchas ubicaciones y ubicación pertenece a la persona que la persona puede tener solo una ubicación activa

El modelo de colocación tiene una validación que verifica si una persona ya tiene una ubicación activa cuando se guarda.

@placement is active placement
@employment.placement = @person

if @placement.save
  #################
  @person.placements << @placement
  @company.placements << @placement
end

Ahora, cuando la ubicación se guarda por primera vez, no hay problema, se guarda.

Ahora el problema viene cuando

@person.placements << @placement

Dado que la persona ya tiene una colocación activa a través de @Placement.save.

@Person.placements << @Placement nuevamente guarda @Placement y el error de validación de validación al objeto @Placement.

¿Hay alguna forma de decir que no pase por esa validación específica?

O cualquier solución alternativa es bienvenida.

Gracias

¿Fue útil?

Solución

puede usar: guardar: validate => false

Otros consejos

Lo primero que si quieres guardar después de todas las validaciones pasas, entonces haz algo como esto

if @placement.valid?
  @person.placements << @placement
  @company.placements << @placement
end

Lo siguiente es que si estás usando Mongoide entonces << llamada de operador .save en ambos documentos.

La solución puede ser sobrescribida << de Mongoide, o la necesidad de speacificar la validación durante la cual la acción.

validates :placeholder, :on => :create Y o

if @placement.valid?
  @placement.person = @person
  @company.placements << @placement
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top