Rails:按月和年查询 ActiveRecord

Ari*_*rif 1 ruby ruby-on-rails

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

Jan,2014 - March,2014
April,2014 - Jun,2014
....
Oct,2014 - Dec,2014
Run Code Online (Sandbox Code Playgroud)

用户可以选择这些日期范围之一,并且只会显示位于所选日期范围内的那些记录。要过滤的字段start_date是时间戳字段。

所以我想要这样的东西:

filter = params[:filter].split("-") 
@posts = Post.where(start_date: filter[0]..filter[1])
Run Code Online (Sandbox Code Playgroud)

但在 params 中,我只得到月份和年份。如何解析这些值以便上述查询有效?

Vis*_*AIN 6

嘿,您可以尝试使用Date.strptime将字符串解析为日期

filter = params[:filter].split(" - ") 
Run Code Online (Sandbox Code Playgroud)

使用将字符串转换为日期 strptime

st_date = Date.strptime(filter[0],"%B,%Y")
end_date = Date.strptime(filter[1],"%B,%Y")
Run Code Online (Sandbox Code Playgroud)

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

date_range = st_date.beginning_of_month..end_date.end_of_month

@posts = Post.where(:start_date =>  date_range)
Run Code Online (Sandbox Code Playgroud)