Я пробовал эту вещь, но это не сработало
#Non-working code
before_save: record_old_value
after_save: record_change
def record_old_value
@old_value = self.field
end
def record_change
if @old_value==self.field
create_record_in_history :old_value => @old_value, :new_value => self.field
end
end
Причина, по которой это не сработало, была в том, что мы установили self.field = new_value, чтобы в before_save он был недоступен Но у rails есть еще функция Active-record, например field_changed , которую можно напрямую использовать как before_save, так и after_save. Так что я закончил с этим решением
#working code
after_save :run_function
def run_function
@old_value = field_was
if @old_value==self.field
create_record_in_history :old_value => @old_value, :new_value => self.field
end
end