Краткий ответ на ваш вопрос: Да.
Запуск model.is_active = false
сам по себе не сохранит изменение в базе данных.Попробуйте заново извлечь запись базы данных после запуска model.is_active = false
, и вы увидите, что значение фактически не изменилось;для этого вам также нужно запустить model.save
.
Однако для подобных сценариев (при условии, что вы хотите немедленно сохранить изменения в записи!) есть более краткий способ сохранения данных, чемвыполнение двух команд:
model.update_attribute(:is_active, false)
Это обновит значение в базе данных, если проверки пройдены, а также выполнит любые обратные вызовы (например, after_save
).
Если вы хотите обновитьзначение без выполнения проверок и обратных вызовов (что обычно быстрее, но более «опасно»), чем вы можете вместо этого использовать:
model.update_column(:is_active, false)