我有一个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
当我实际搜索索引字段之一时,我只得到满足查询并在本周开幕的展览的正确响应,但是,当我想要所有开幕展览并且不通过搜索查询时,我得到所有展览,不仅仅是那些本周开放的。
我在这里做错了什么?如何从命名范围过渡到构面?还是我应该将其作为过滤器?