使用太阳黑子搜索模型层次结构

时间:2013-07-11 22:42:01

标签: ruby-on-rails sunspot

示例:

我有以下内容:

class Person < ActiveRecord::Base
  has_many :educations
end

class Education < ActiveRecord::Base
  belongs_to :school
  belongs_to :degree
  belongs_to :major
end

class School < ActiveRecord::Base
  has_many :educations
  # has a :name
end

我希望能够返回所有去过特定学校的人,所以在我的PeopleController#index我有

@search = Person.search do
  keywords params[:query]
end

@people = @search.results

如何在Person模型上创建可搜索的方法以进入学校?我会做这样的事情:

searchable do
  text :school_names do
    educations.map { |e| e.school.name }
  end
end

我最终会对教育的每个属性(学位等)做些什么,或者我可以在教育中制作一个可搜索的方法,并以某种方式“调用”来自Person.searchable的那个?

由于

1 个答案:

答案 0 :(得分:0)

最好将特定模型的所有索引字段的声明保留在同一个地方。

另外,你做得很好:索引:school_names,对你想要索引的其他关联字段做同样的事情。