2012-07-10 111 views
1

我想比較rails中應用的日期。我試過這個鏈接Comparing dates in rails。但是,這不是我想要什麼,假設我有根據日期過濾器,然後我做Ruby on Rails - 日期比較

<% jobs = @user.jobs.where(:curr_date => (Date.today))%>

這裏,curr_date是我選擇了「日期」的屬性。

此代碼適用於具有今天日期的條目,但如果我希望所有條目都具有今天和一週之前的日期,我該怎麼辦?

Thanx! :)

回答

1

我覺得這樣的事情應該工作:

<% jobs = @user.jobs.where(['curr_date < ? AND curr_date > ?', Date.today, 1.week.ago])) %>

+0

我認爲代碼有小錯誤。它應該['curr_date <=? AND curr_date> =?',Date.today,1.week.ago] – 2012-07-10 11:42:41

+0

嗯,問題是它是打開或關閉間隔:) – ABrukish 2012-07-10 13:47:13

2

您可以簡單地使用

jobs = @user.jobs.where(:curr_date => (DateTime.now..1.week.ago)) 

更新到DateTime.now,或者您也可以使用Date.today.to_time否則會出現一個錯誤比較一個Date和一個Time

+1

還要注意,這樣做的觀點(因爲你的問題sugests)並不好練習 – Draiken 2012-07-10 11:34:50

+0

thanx答覆,但我得到了一些「範圍的錯誤值」的錯誤。相反,我試過:'<%jobs = @ user.jobs.all(:conditions => ['curr_date>?',Date.today-7])%>'它對我有用。 :)如果可能的話,請告訴我有關的錯綜複雜。 – 2012-07-10 11:55:42

+1

請使用(Date.today.to_time..1.week.ago)代替。 – moritz 2012-07-10 12:34:29

0

還沒有嘗試這種在一個控制檯,但我認爲它應該工作:

# You need to implement the #week_before method 
@user.jobs.where(:curr_date => (Date.week_before..Date.today)) 

Active Record Querying - Array Conditions檢查範圍條件(2.2.2)

+2

'IN'不是有效的語法,應該是'=>' – deefour 2012-07-10 11:40:17

0

comparison_date_1下< => comparison_date_2可能是有益的給你返回-1,1 ,0因此,你可以填充它們......