如何为Rails上的太阳黑子搜索设置关联模型的可搜索多个属性

时间:2014-02-12 06:31:26

标签: ruby-on-rails sunspot

我有一些关系模型如下:

订单有很多order_items(型号OrderItem);

订单属于一个供应商(型号用户),该供应商具有关联的型号公司。

我希望根据订单生成这些全文搜索:

1)OrderItem的属性:名称,描述
2)供应商的公司名称

然后我设置了可搜索的属性:

searchable do
... 
text :order_items do
  order_items.map { |item| item.name item.description }    # 1
end  

text :vendor do
  vendor.company.name  # 2
end

重新编制索引时,第1行和第2行都会报告为错误。

所以,请帮助如何编写这两种情况的代码。 感谢。

1 个答案:

答案 0 :(得分:2)

您可以在模型的类和实例方法上编写可搜索的方法。做类似以下的事情:

class Order

  searchable do
    text :order_items_search
    text :vendor_search
  end

  def order_items_search
    self.order_items.map{|item| item.name + ',' + item.description}.join(',')
  end

  def vendor_search
    self.vendor.company.name
  end
end