Как настроить несколько атрибутов с возможностью поиска для связанных моделей для поиска Sunspot на Rails

У меня есть несколько моделей с отношениями следующим образом:

В заказе много элементов 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 будут сообщать об ошибках при повторной индексации.

Итак, помогите, пожалуйста, как писать коды для обоих случаев. Спасибо.


person Wiking    schedule 12.02.2014    source источник
comment
а в какой модели вы добавили этот блок с возможностью поиска?   -  person Ishank Gupta    schedule 12.02.2014
comment
В модели «Заказ», так как я хочу сделать поиск по порядку.   -  person Wiking    schedule 12.02.2014


Ответы (1)


Вы можете написать доступные для поиска методы для методов класса и экземпляра модели. Сделайте что-нибудь вроде следующего:

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
person Brooks    schedule 12.02.2014