我想搜索created_at Date.today.beginning_of_day..Date.today.end_of_day
像Rails的洗劫
Order.search({created_at_between: Date.today.beginning_of_day..Date.today.end_of_day }).result
,但不是工作
如何使搜索日期之間created_at
之間用呢?
我想搜索created_at Date.today.beginning_of_day..Date.today.end_of_day
像Rails的洗劫
Order.search({created_at_between: Date.today.beginning_of_day..Date.today.end_of_day }).result
,但不是工作
如何使搜索日期之間created_at
之間用呢?
配置/初始化/ 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
然後created_at_between '2014-01-01,2014-01-02'
作品!
這裏是解決方案,
params[:q] = {:created_at_gt => Date.current.beginning_of_day, :created_at_lt => Date.current.end_of_day}
Order.search(params[:q]).result
我同意Frank所接受的答案,但我使用的arel版本沒有定義'between'。因此,如果您使用的是舊版本,請參閱下面的快速和骯髒的解決方案。
在我看來,我有一個像
= f.text_field :request_date_between, class: 'daterange'
一個洗劫搜索字段將日期發送到控制器像
「2015年10月1日至2015年10月31日」
然後我下來,髒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
謝謝!這很有用。 –