undefined_method 'tag_count' с использованием act_as_taggable_on_steroids - PullRequest
1 голос
/ 16 ноября 2009

Я использую acts_as_taggable, чтобы создать облако тегов для моего приложения. У меня есть модель «Вопрос», которая использует плагин acts_as_taggable. Я в основном хочу отфильтровать теги для модели вопроса.

У меня также есть модель «Тема». Таким образом, отношение между предметами и вопросами таково, что у субъекта много вопросов, и вопрос принадлежит субъекту.

Так что, когда я звоню @subject.questions.tag_counts, все работает нормально. Но скажи, что я звоню @subject.free_questions.tag_counts, где free_questions - это метод, который я определил, он дает мне "undefined_method tag_counts для #<Array>. Я хочу найти все теги для подмножества вопросов.

Кто-нибудь может предложить обходной путь?

1 Ответ

3 голосов
/ 16 ноября 2009

Это может помочь реализовать free_questions как named_scope, чтобы вы могли вызывать методы ассоциации для него.

Что-то вроде:

class Question < ActiveRecord::Base
  named_scope :free, :conditions => {:free => true} # conditions that make a question 'free'
end

Тогда вы можете:

@subject.questions.free

и я подозреваю, что это может сработать. (не имеет большого опыта работы с acts_as_taggable)

@subject.questions.free.tag_counts

Когда вы используете named_scope (вместо определенного вами метода модели), вы получаете прокси-объект, который выглядит и действует как Array, но позволяет вам связать ActiveRecord методы ассоциации с ним. Любые методы, которые работают на @subject.questions, вы должны вызывать на @subject.questions.free.

...