1

我正在使用acts_as_taggable为我的应用程序创建标签云。我有一个使用acts_as_taggable插件的模型“问题”。我基本上想过滤问题模型的标签。

我也有一个“主题”模型。所以主语和问题之间的关系是一个主语有很多问题,一个问题属于一个主语。

所以当我打电话时@subject.questions.tag_counts,它工作正常。但是假设我调用 @subject.free_questions.tag_countsfree_questions我定义的方法在哪里,它给了我一个“undefined_method tag_countsfor ” #<Array>。我基本上想找到问题子集的所有标签。

有人可以提出解决方法吗?

4

1 回答 1

3

它可能有助于实现free_questionsnamed_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

当您使用 a named_scope(而不是您定义的模型方法)时,您会返回一个看起来和行为类似于 的代理对象Array,但允许您将ActiveRecord关联方法链接到它上面。任何适用于@subject.questions您的方法都应该能够调用@subject.questions.free.

于 2009-11-16T07:05:29.170 回答