Rails Действует как taggable on: Найти связанные ключевые слова для нескольких типов taggable - PullRequest
2 голосов
/ 06 апреля 2011

Я создаю область «Связанный контент» на веб-сайте и использую для этого самоцвет «действует как тег».Затем в статье он извлекает связанный контент по ключевым словам.Следующий код хорошо работает с find_related_keywords (ПРИМЕЧАНИЕ. Поместив всю логику в представление для упрощения и пока сделайте эту работу, мы соответствующим образом осуществим рефакторинг позже)

<% for related in @article.find_related_keywords.limit(5) %>
    # Markup for related item in here       
<% end %>

Однако это возвращает только связанный контент в том жеТип модели, в данном случае ст.У меня также есть другие модели / таблицы, такие как «Обзоры», «Интервью» и т. Д., В которых также определено поле taggable: ключевые слова, и мне бы хотелось, чтобы они были включены в результаты поиска find_related_keywords.Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Вы пробовали:

Review.tagged_with(@article.category_list, :any => true).limit(5)

Interview.tagged_with(@article.category_list, :any => true).limit(5)
0 голосов
/ 15 апреля 2011

Изучив, как работает Acts as Taggable On - в сочетании с отсутствием ответа - я пришел к выводу, что это невозможно сделать, и он действительно предназначен только для одного типа объекта.

Однако ярассмотрел альтернативную возможность использования поисковых систем в моих интересах.В моем проекте в настоящее время есть Sunspot / Solr, теперь я думаю об использовании поля ключевых слов для автоматического поиска по ключевым словам, и теоретически это должно работать нормально при возврате последних пяти результатов или еще чего-нибудь из любого индексированного объекта / таблицы.Solr.

...