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?" часть....

Ответы на вопрос(2)

Ваш ответ на вопрос