Rails:按月和年查询ActiveRecord

时间:2016-06-14 09:21:50

标签: ruby-on-rails ruby

在我的rails项目中,有一个搜索页面,其中包含日期范围值以( - )分隔的下拉列表。下拉选项如下:

Jan,2014 - March,2014
April,2014 - Jun,2014
....
Oct,2014 - Dec,2014

用户可以选择其中一个日期范围,只显示属于所选日期范围的记录。要过滤的字段为start_date,是一个时间戳字段。

所以我想要这样的事情:

filter = params[:filter].split("-") 
@posts = Post.where(start_date: filter[0]..filter[1])

但是在params中我只有一个月和一年。如何解析这些值以便上述查询有效?

1 个答案:

答案 0 :(得分:4)

嘿,您可以尝试使用Date.strptime

解析字符串到目前为止
filter = params[:filter].split(" - ") 

使用strptime

将字符串转换为日期
st_date = Date.strptime(filter[0],"%B,%Y")
end_date = Date.strptime(filter[1],"%B,%Y")

创建日期范围作为第一个月的开头到第二个月的结束

date_range = st_date.beginning_of_month..end_date.end_of_month

@posts = Post.where(:start_date =>  date_range)