Ruby on rails 铁路之间的使用

Ruby on rails 铁路之间的使用,ruby-on-rails,ransack,Ruby On Rails,Ransack,我希望在日期之间创建搜索。今天。开始日期..日期。今天。结束日期 像 但这不是工作 如何在日期之间搜索在创建的。以下是解决方案 params[:q] = {:created_at_gt => Date.current.beginning_of_day, :created_at_lt => Date.current.end_of_day} Order.search(params[:q]).result 这是解决办法 params[:q] = {:created_at_gt =>

我希望在
日期之间创建搜索。今天。开始日期..日期。今天。结束日期

但这不是工作

如何在日期之间搜索在创建的

以下是解决方案

params[:q] = {:created_at_gt => Date.current.beginning_of_day, :created_at_lt => Date.current.end_of_day}

Order.search(params[:q]).result
这是解决办法

params[:q] = {:created_at_gt => Date.current.beginning_of_day, :created_at_lt => Date.current.end_of_day}

Order.search(params[:q]).result

config/initializers/ransack.rb

Ransack.configure do |config|
  config.add_predicate 'between',
    arel_predicate: 'between',
    formatter: proc { |v|
      parts = v.split(',')
      OpenStruct.new(begin: parts[0], end: parts[1])
    },
    validator: proc { |v| v.present? },
    type: :string
end

然后
在'2014-01-012014-01-02'之间的\u创建了\u
工作

config/initializers/ransack.rb

Ransack.configure do |config|
  config.add_predicate 'between',
    arel_predicate: 'between',
    formatter: proc { |v|
      parts = v.split(',')
      OpenStruct.new(begin: parts[0], end: parts[1])
    },
    validator: proc { |v| v.present? },
    type: :string
end

然后
在'2014-01-012014-01-02'之间的\u创建了\u
工作

我同意弗兰克的回答,除了我使用的arel版本没有定义“介于”之间之外。因此,如果您使用的是旧版本,请参阅下面我的快速脏解决方案

在我看来,我有一个像这样的搜索领域

= f.text_field :request_date_between, class: 'daterange'
这将向控制器发送一个日期,如

“2015-10-01至2015-10-31”

然后在我的down and dirty ransack.rb初始值设定项中

Ransack.configure do |config|
  config.add_predicate 'between',
                       arel_predicate: 'between',
                       formatter: proc { |v| v.split(' to ') },
                       type: :string
end

module Arel
  module Predications
    def between other
      gteq(other[0]).and(lt(other[1]))
    end
  end
end

我同意Frank的回答,除了我使用的arel版本没有“中间”定义之外。因此,如果您使用的是旧版本,请参阅下面我的快速脏解决方案

在我看来,我有一个像这样的搜索领域

= f.text_field :request_date_between, class: 'daterange'
这将向控制器发送一个日期,如

“2015-10-01至2015-10-31”

然后在我的down and dirty ransack.rb初始值设定项中

Ransack.configure do |config|
  config.add_predicate 'between',
                       arel_predicate: 'between',
                       formatter: proc { |v| v.split(' to ') },
                       type: :string
end

module Arel
  module Predications
    def between other
      gteq(other[0]).and(lt(other[1]))
    end
  end
end