Estoy tratando de establecer un campo booleano en falso en función del valor de otro campo booleano. Intenté lo siguiente con un modelo ActiveRecord:Rieles: cómo usar before_save para cambiar un valor de campo basado en otro campo?
before_save :reconcile_xvent
def reconcile_xvent
self.xvent_hood = false if !self.xvent_plenum?
end
Pero esto no funciona. Ahora, muchos de mis pruebas de unidad con fallan:
ActiveRecord::RecordNotSaved: ActiveRecord::RecordNotSaved
¿Cómo puedo configurar xvent_hood ser falsa si xvent_plenum es falsa?
actualización
Aquí es lo que funciona (algunos de los cuales proviene de los comentarios/respuestas a continuación):
before_validation :reconcile_xvent
def reconcile_xvent
if self.xvent_hood?
self.xvent_hood = false unless xvent_plenum?
end
end
no pude averiguar para hacer que funcione sin el "si mismo. xvent_hood? " parte ....
Si 'xvent_hood' tiene que ser igual' xvent_plenum', tal vez lo que debe hacer un 'xvent_hood = xvent_plenum'. – MurifoX
Pero no siempre serán iguales. xvent_plenum debería poder ser verdadero y xvent_hood falso. – croceldon
Intenta usar 'a menos' entonces. 'self.xvend_hood = falso a menos que self.xvent_plenum'. – MurifoX