2012-07-10 117 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因此,你可以填充它们......