Как написать доступный для поиска метод для ассоциации принадлежности_к с помощью драгоценного камня sunspot_rails

У меня две модели. один — это бренд, а другой — product_detail. В таблице brand есть поля идентификатора и имени, а в таблице product_details есть поля идентификатора, имени, цены, скидки и brand_id.

У бренда много product_details, а product_detail принадлежит бренду

brand.rb выглядит так:

class Brand < ActiveRecord::Base
    has_many :product_details
end

и product_details.rb выглядит так

class ProductDetail < ActiveRecord::Base
    belongs_to :Brand, :dependent=>:destroy
end

Пытаюсь провести поиск по рельсам солнечных пятен. Я хочу искать на основе названия бренда и названия продукта с введенным пользователем текстом. Для этого я написал метод поиска следующим образом:

class ProductDetail < ActiveRecord::Base
    belongs_to :brands, :dependent=>:destroy

     searchable do
      text :name
      text :brands do
        brands.map(&:name)
      end
    end
end

Когда я запускаю rake sunspot:reindex

Он выдает ошибку неопределенной карты методов для класса nil.

Если изменить код следующим образом

class ProductDetail < ActiveRecord::Base
    belongs_to :Brand, :dependent=>:destroy

     searchable do
      text :name
      text :Brand do
        brands.map(&:name)
      end
    end
end

Выдает ошибку неопределенные бренды методов для класса product_detail

Пожалуйста, помогите мне, как это сделать.


person web spider26    schedule 05.04.2012    source источник


Ответы (1)


Так должно быть

belongs_to :brand, :dependent=>:destroy

но вы уверены, что хотите удалить бренд всякий раз, когда вы удаляете связанный с ним product_detail?

В любом случае доступный для поиска блок должен быть записан как

searchable do
  text :name
  text :brand do
    brand.name
  end
end

Надеюсь, это поможет.

person moritz    schedule 05.04.2012
comment
Нет, я не хочу удалять бренд при удалении продукта. Это моя ошибка, у меня было depend=›destroy в модели product_details вместо модели бренда. я исправлю свою ошибку - person web spider26; 05.04.2012