我有一个简单的 Rails 应用程序,其 Post 模型属于创建者(它是一个用户对象),我想找到与创建者的 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
并验证了 Post 存在的创建者在数据库中的名字为“Matt”。
有什么我想念的吗?谢谢!
更新:
将以下内容添加到 Post.rb 就可以了:
def to_indexed_json
as_json.merge(
creator: creator.as_indexed_json
).to_json
end
显然,您需要在 to_indexed_json 中指定关联才能使其工作。