在控制器中:
@reminders = Reminder.find(:all, :conditions => ["group_id = ? and remind_at < ?", g.id, @three_days_ago])
@reminders.each do |r|
r.remind_at = DateTime.now
end
@reminders.each(&:save!)
p "*** test ***"
这种方法在我的代码的另一部分中起作用,但是由于某种原因,没有错误消息,但是数据没有保存。这不是属性可访问的问题。测试消息正在控制台中打印,因此该过程不会跳过该部分代码。我的语法正确吗?
最佳答案
这应该可行,但这不是一种非常有效的处理方式。您可能会有大量的提醒,这可能需要多个GB的内存才能加载。获取任何内容的all
本质上都是冒险的。
更好的解决方案是仅使数据库执行此操作:
Reminder.update_all(:remind_at => Time.now)
即使在很大的桌子上,此操作也应相当快地完成,不需要加载,调整,验证和保存每个模型。