我有一个Exhibition
模型,它有三个命名范围:
scope :opening, -> { where(start_date: (Date.today .... }
scope :closing, -> { where(end_date: .... }
scope :reception, -> { where("reception is not null")... }
我在同一模型中有以下轮胎映射:
tire.mapping do
...
indexes :start_date, type: "date"
indexes :end_date, type: "date"
indexes :reception, type: "date"
...
end
我的搜索方法:
def self.search(params)
tire.search(load: true) do
query { string params[:query] } if params[:query].present?
...
end
在我的exhibitions_controller.rb
内,我有以下内容(关闭和接收时也一样)
def opening_this_week
@exhibitions = Exhibition.opening.search(params)
...
end
当我实际搜索其中一个索引字段时,我会收到正确的回复,只有满足查询的展览并且本周开放,但是,当我想要所有开放展览并且没有通过搜索查询时,我得到所有展览,不仅仅是那些本周开幕的展览。
我在这里做错了什么?如何从命名范围转换为方面?或者我应该将其作为过滤器吗?