有一个名为contact_email.date_sent如何在rails上使用.find过去五天的ruby?
我希望能够运行它显示所有那些DATE_SENT的范围是date.today和date.today在5天前的报表模型。
我想我使用类似
@send_emails = Contact_Email.find(:conditions=> ???)
但并不清楚究竟是最好的方式。谢谢!
有一个名为contact_email.date_sent如何在rails上使用.find过去五天的ruby?
我希望能够运行它显示所有那些DATE_SENT的范围是date.today和date.today在5天前的报表模型。
我想我使用类似
@send_emails = Contact_Email.find(:conditions=> ???)
但并不清楚究竟是最好的方式。谢谢!
尝试这种情况:
ContactEmail.all(:conditions => ["date_sent >= ?", 5.days.ago.to_date])
这种方法比使用BETWEEN
子句(假设date_sent
被索引)
买者更快:
值date_sent
柱的应少一点比当前日期。
编辑1
要迁移添加索引:
add_index :contact_emails, :date_sent
如果它的东西,你会经常使用,为什么不把named_scope模型:
named_scope :recent, lambda { |*args| {:conditions => ["date_sent > ?", (args.first || 5.days.ago)]} }
这将让你写:
ContactEmail.recent
最近5天的价值,或使用arg指定您自己的时间范围,例如最后两周:
ContactEmail.recent(2.weeks.ago)
我喜欢这个主意......我需要刷新一下named_scope ... – Angela 2010-05-08 16:42:41
是否有可能使我能够得到Date.today在星期一至星期五发送的内容? – Angela 2010-05-08 16:20:26
如何创建迁移以将date_sent添加为索引(date_sent alrady存在,但未设置为索引)? – Angela 2010-05-08 16:21:23
更新了答案,看看。 – 2010-05-08 17:29:12