有一个名为contact_email.date_sent的模型
我希望能够运行一个报告,显示date_sent范围介于date.today和date.today 5天之前的所有报告。
我假设我使用类似
的东西@send_emails = Contact_Email.find(:conditions=> ???)
但不清楚究竟什么是最好的方法。谢谢!
答案 0 :(得分:1)
ContactEmail.find(:conditions => ['date_sent BETWEEN ? AND ?', Date.today, 5.day.ago.to_date])
答案 1 :(得分:1)
试试这个:
ContactEmail.all(:conditions => ["date_sent >= ?", 5.days.ago.to_date])
这种方法比使用BETWEEN
子句更快(假设date_sent
被编入索引)
警告:
date_sent
列的值应小于当前日期。
修改1
在迁移中添加索引:
add_index :contact_emails, :date_sent
答案 2 :(得分:0)
如果您经常使用它,为什么不在模型中放置named_scope:
named_scope :recent, lambda { |*args| {:conditions => ["date_sent > ?", (args.first || 5.days.ago)]} }
这将让你写:
ContactEmail.recent
过去5天的价值,或使用arg指定您自己的时间范围,例如过去两周:
ContactEmail.recent(2.weeks.ago)