我正在使用acts_as_taggable为我的应用程序创建一个标签云。我有一个使用acts_as_taggable插件的模型“问题”。我基本上是想过滤问题模型的标签。
我也有一个“主题”模型。因此,主体和问题之间的关系是,一个主体有许多问题,而一个问题属于一个主体。
因此,当我调用@subject.questions.tag_counts时,它工作得很好。但是假设我调用@subject.free_questions.tag_counts,其中free_questions是我定义的一个方法,它给我一个"undefined_method tag_counts for #<Array>“,我基本上是想找出问题子集的所有标签。
有没有人能建议一种变通办法?
发布于 2009-11-16 15:05:29
将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上调用。
https://stackoverflow.com/questions/1740522
复制相似问题