0

我有一个简单的 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 中指定关联才能使其工作。

4

0 回答 0