3

我有一个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

当我实际搜索索引字段之一时,我只得到满足查询并在本周开幕的展览的正确响应,但是,当我想要所有开幕展览并且不通过搜索查询时,我得到所有展览,不仅仅是那些本周开放的。

我在这里做错了什么?如何从命名范围过渡到构面?还是我应该将其作为过滤器?

4

0 回答 0