Обязателен ли метод сохранения в рельсах? - PullRequest
0 голосов
/ 08 марта 2019
Model.find(ids).each { |model| model.is_active = false } unless ids.empty?

Здесь нужен метод model.save или нет?Потому что без этого тоже работает.

Столбец определен так:

t.integer :is_active, limit: 1

1 Ответ

0 голосов
/ 08 марта 2019

Краткий ответ на ваш вопрос: Да.

Запуск model.is_active = false сам по себе не сохранит изменение в базе данных.Попробуйте заново извлечь запись базы данных после запуска model.is_active = false, и вы увидите, что значение фактически не изменилось;для этого вам также нужно запустить model.save.

Однако для подобных сценариев (при условии, что вы хотите немедленно сохранить изменения в записи!) есть более краткий способ сохранения данных, чемвыполнение двух команд:

model.update_attribute(:is_active, false)

Это обновит значение в базе данных, если проверки пройдены, а также выполнит любые обратные вызовы (например, after_save).

Если вы хотите обновитьзначение без выполнения проверок и обратных вызовов (что обычно быстрее, но более «опасно»), чем вы можете вместо этого использовать:

model.update_column(:is_active, false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...