我有一个简单的Rails应用程序,其中Post模型属于一个创建者(它是一个User对象),我想查找与创建者的first_name匹配的帖子。
class Post < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
belongs_to :creator, polymorphic: true
mapping do
indexes :id, type: 'integer'
indexes :title, boost: 10
indexes :creator do
indexes :first_name
indexes :service_type
end
end
end
当我运行搜索时,没有结果:
Post.tire.search(load: true, page: params[:page], per_page: params[:per_page]) do
query do
match 'creator.first_name', 'Matt'
end
end
即使我已经运行rake environment tire:import:all FORCE=true
并验证帖子存在时,数据库中的创建者名字为“Matt”。
我有什么遗失的吗?谢谢!
更新:
将以下内容添加到Post.rb可以解决问题:
def to_indexed_json
as_json.merge(
creator: creator.as_indexed_json
).to_json
end
显然,您需要在to_indexed_json中指定关联才能使其正常工作。