2013-11-20 130 views
0

我想从我的约会日期(11-20-2013)在1周的范围内获得我所有的记录,其中有start_date(因此不是正常的creation_date)。范围日期,直到日期+周

我从来没有真正在Rails中使用范围,所以我宁愿在这里迷路。我应该使用.where()吗?如果是这样,我该如何在这个范围内使用start_date + 1周?

我已经试过类似:

if params[:startdate] 
    group = Group.find_by_id(params[:group_id]).where(:start_date => params[:startdate]..params[:startdate] + 1.weeks) 
    end 

会抛出:can't convert ActiveSupport::Duration into String

回答

1

因为params[:startdate]是字符串,当你需要的DateTime。

你可以尝试分析它

startdate = DateTime.parse(params[:startdate]) rescue nil 
if startdate 
    group = Group.find_by_id(params[:group_id]).where(:start_date => startdate..startdate + 1.weeks) 
else 
    # you get wrong startdate 
end 
+0

对不起,我迟到的反应。我得到了一个'未定义的方法,其中'<#Group:0x8623338>' – CaptainCarl

+0

'Group'是一个模型(类'ActiveRecord :: Base')? – gotva

+0

是的,这是一个模型。 – CaptainCarl