Rails: создание тегов Acts_as_Taggable_On из коллекции помеченных объектов - PullRequest
2 голосов
/ 17 июля 2011

У меня есть сайт с Thinking Sphinx, настроенный для возврата результатов поиска по именам продуктов, тегам, описаниям и т. Д. Работает нормально.

Однако, когда я получаю группу результатов поиска из TS, япри попытке получить tag_counts из Acts_as_Taggable_On выдается ошибка «no method».Я обнаружил, что ошибка распространяется на ряд ситуаций, когда я мог бы вызвать метод tag_counts для коллекции теговых элементов.

Эти работы:

Owner.first.products.all.tag_counts
Product.where(:color => 'white').tag_counts
Product.first.tag_counts

Но это не так:

Product.all.tag_counts
Product.search('white').to_a.tag_counts

(Последний вызывает поиск Thinking Sphinx, который возвращает коллекцию поиска TS.)

Они возвращаются с некоторым вариантом этой ошибки:

NoMethodError: undefined method `tag_counts' for #<Array:0x00000101585280>

У меня есть смутное представление о том, что это своего рода прокси-метод, в котором он правильно связывается с первыми вызовами, но не с последними.

У всех есть предложения о том, как я могу убедиться, что массив тегированных объектов имеет tag_countsметод доступен?

1 Ответ

0 голосов
/ 18 июля 2011

Product.all возвращает массив, и вы пытаетесь запустить метод tag_counts для этого массива, который не будет работать, так как массив не будет иметь этот метод.

Что вы, вероятно, хотите сделать, это:

Product.tag_counts

Должно возвращаться количество тегов для всех продуктов.

...