我在Rails 2.2.2应用程序中保存数组时遇到问题

时间:2011-10-19 15:49:17

标签: mysql ruby-on-rails

在控制器中:

@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 ***"

这种方法在我的代码的另一部分工作,但由于某种原因没有错误消息,但数据没有保存。它不是属性可访问的问题。测试消息正在控制台中打印,因此该过程不会跳过该部分代码。我的语法是否正确?

1 个答案:

答案 0 :(得分:1)

这应该有效,但这不是一种非常有效的做事方式。您可能会有大量的提醒,可能需要加载多GB的内存。获取all任何内容本身都存在风险。

更好的解决方案是让数据库执行此操作:

Reminder.update_all(:remind_at => Time.now)

即使在大型桌面上,此操作也应该相当快速地完成,并且不需要加载,调整,验证和保存每个模型。