我有一个Event模型和一个EventDate模型。
事件has_many:Event_dates和EventDate belongs_to:Event
我正在尝试建立一个Sunspot Solr搜索,这样它只会返回事件日期在未来的事件。
我认为我在我的事件模型中正确地设置了这个设置:
searchable do
text :headline, :info
text :event_dates do
event_dates.map(&:event_date).compact.join(" ")
end
end
但在我的搜索控制器中,我遇到了这个问题:
class SearchController < ApplicationController
def search
@search = Sunspot.search [Event, Venue] do
fulltext params[:search]
any_of do
all_of do
with(:class, Event)
with(:event_date).greater_than(Time.zone.now)
end
all_of do
with(:class, Venue)
end
end
end
@results = @search.results
respond_to do |format|
format.json { render json: @results }
end
end
end
线路with(:event_date).greater_than(Time.zone.now)
产生错误:Sunspot::UnrecognizedFieldError (No field configured for Event, Venue with name 'event_date'):
我也尝试过多个with(:event_dates)
,但产生了相同的错误。
在没有with(:event_date)行的情况下,搜索效果很好,但我真的需要这一点来实现搜索的目的。
有人能帮上忙吗?
提前谢谢。
哦,如果有人想知道的话,这是我在场馆模型中的可搜索区块:
searchable do
text :name, :address_1, :address_2, :postcode
text :town do
town.town
end
end
我最终通过修改事件模型中的可搜索块来自己解决这个问题:
searchable do
text :headline, :info
time :event_dates, :multiple => true do
event_dates.map(&:event_date)
end
end
将event_dates上的数据类型更改为时间(这是一个明显的错误),但也将:multiple => true
添加为具有许多event_dates。