我的应用程序中有一个Fieldnote模型,其中has_many:通过名为fieldnote_activities的表附加到它上面的活动.然后我用这种方式定义一个可搜索的索引:
searchable :auto_index => true, :auto_remove => true do
integer :id
integer :user_id, :references => User
integer :activity_ids, :multiple => true do
activities.map(&:id)
end
text :observations
end
Run Code Online (Sandbox Code Playgroud)
然后我有一个搜索模型来存储/更新搜索.因此,搜索模型也与活动有关联.然后我执行我的搜索:
@search = Search.find(params[:id])
@query = Fieldnote.search do |query|
query.keywords @search.terms
if @search.activities.map(&:id).empty? == false
query.with :activity_ids, @search.activities.map(&:id)
end
end
@fieldnotes = @query.results
Run Code Online (Sandbox Code Playgroud)
现在这一切都很有效.问题是,如果我更改与fieldnote关联的活动,搜索结果不会更改,因为它会显示该fieldnote的索引不会更改.当我定义可搜索索引时,我的印象是:auto_index => true和:auto_remove => true标志将跟踪新关联(或删除的关联),但似乎并非如此.我该如何解决?