2010-01-21 28 views

回答

1

这是通过一个名为范围,做适当的限制,即确定哪些记录是在当前点可见的时间通常实现更加随心所欲日期:

class MyRecord < ActiveRecord::Base 
    named_scope :visible_at, lambda { |date| { 
    :conditions => [ 
     'visible_from<=? AND visible_to>=?', 
     date, date 
    ] 
    }} 
end 

想必您日期存储为UTC,因为它是一个相当大的滋扰从一个本地时间转换到另一个的目的显示。

您可以选择所有可见的模型是这样的:

@records = MyRecord.visible.all 
@records = MyRecord.visible_at(2.weeks.from_now) 
0

如果您对“given_date”执行此操作。

select * 
from table 
where start_date <= given_date 
and end_date >= given_date 
+0

顺便说一句,这不是一个SQL的问题? – 2010-01-21 15:17:48

0

这就是你如何使用活动记录来做到这一点。这可以改变使用占位为

class MyRecord < ActiveRecord::Base 
    named_scope :visible, 
    :conditions => 'visible_from<=UTC_TIMESTAMP() AND visible_to>=UTC_TIMESTAMP' 
end 

Foo.find(:all, :conditions => ['valid_from <= ? and valid_to >= ?', valid_date, valid_date]) 
相关问题