Ответ 1
Вы ищете update_all
. См. документ.
Остерегайтесь, никакие обратные вызовы не запускаются таким образом.
как я могу обновить таблицу Notification.email ко всем true в консоли?
В консоли я хотел бы просмотреть все записи в таблице и установить email = true.
Идеи?
Вы ищете update_all
. См. документ.
Остерегайтесь, никакие обратные вызовы не запускаются таким образом.
это должно работать
Notification.all.each do |n| n.update_attribute(:email, true); end
edit: сделано из каменщика:
Notification.all.each { |n| n.update_attribute(:email, true) }
Вы можете использовать:
Notification.update_all(email: true)
Если у вас есть какие-либо условия для обновления, вы должны использовать:
Notification.find_each { |n| n.email = (n.id > 100) ? true : false }
Использовать Something.all
- плохая идея для огромной таблицы db.
Notification.update_all(email: true)
- основной ответ.
Вам не нужно "прокручивать" само по себе, написав свой собственный блок: вы можете позволить активной записи выполнять тяжелую работу для вас - вот пример того, где у вас есть массив идентификаторов, и вы хотите обновить их письма (я в основном взял этот пример прямо из одного из моих контроллеров):
@notifications = Notification.where(id: [1,2,3,2,1,2]).update_all(email: true)
Изменить: люди смотрят вне для sql-инъекции, не включают params [: notification_ids] в свой метод "where" с необработанной строкой без экранирования или вы будете страдать атаками SQL-инъекций; или быть безопасным и использовать хэш.