2010-01-21 69 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]) 
相關問題