Rails: Как использовать before_save для изменения значения поля на основе другого поля?
Я пытаюсь установить для логического поля значение false, основываясь на значении другого логического поля. Я попробовал следующее с моделью ActiveRecord:
before_save :reconcile_xvent
def reconcile_xvent
self.xvent_hood = false if !self.xvent_plenum?
end
Но это не работает. Теперь многие из моих модульных тестов не работают
ActiveRecord::RecordNotSaved: ActiveRecord::RecordNotSaved
Как я могу установить xvent_hood как false, если xvent_plenum равно false?
Update
Вот что работает (некоторые из которых приведены в комментариях / ответах ниже):
before_validation :reconcile_xvent
def reconcile_xvent
if self.xvent_hood?
self.xvent_hood = false unless xvent_plenum?
end
end
Я не могу понять, как это работает без "if self.xvent_hood?" часть....