我正在使用acts_as_taggable
为我的应用程序创建标签云。我有一个使用acts_as_taggable
插件的模型'问题'。我基本上想要过滤问题模型的标签。
我也有一个'主题'模型。因此,主语和问题之间的关系是主语有很多问题,问题属于主语。
所以当我打电话给@subject.questions.tag_counts
时,它运作正常。但是我说我打电话
@subject.free_questions.tag_counts
,其中free_questions
是我定义的方法,它为tag_counts
提供了一个“undefined_method #<Array>
。我基本上想找到子集的所有标记问题。
有人可以建议解决方法吗?
答案 0 :(得分:3)
将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
。