在控制器中:
@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 ***"
这种方法在我的代码的另一部分工作,但由于某种原因没有错误消息,但数据没有保存。它不是属性可访问的问题。测试消息正在控制台中打印,因此该过程不会跳过该部分代码。我的语法是否正确?
答案 0 :(得分:1)
这应该有效,但这不是一种非常有效的做事方式。您可能会有大量的提醒,可能需要加载多GB的内存。获取all
任何内容本身都存在风险。
更好的解决方案是让数据库执行此操作:
Reminder.update_all(:remind_at => Time.now)
即使在大型桌面上,此操作也应该相当快速地完成,并且不需要加载,调整,验证和保存每个模型。