【问题标题】:Rails: Query ActiveRecord by month and yearRails:按月和年查询 ActiveRecord
【发布时间】:2016-06-14 09:21:49
【问题描述】:

在我的 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])

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    嘿,您可以尝试使用 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)
    

    【讨论】:

    • 谢谢。 end_date 出现错误,因此我将其拆分为 (" - ") 而不是 ("-")
    • 是的,它调整了谢谢。有额外的空间。谢谢
    • 请更新您的答案以在 end_date 中使用 filter[1]。而且在计算 date_rang 时,我们还需要 begin_of_month 和 end_of_month 吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多