Rails:从标记对象的集合生成Acts_as_Taggable_On标记计数

时间:2011-07-17 03:19:33

标签: ruby arrays collections methods acts-as-taggable-on

我有一个Thinking Sphinx设置的网站,用于返回产品名称,标签,说明等的搜索结果。工作正常。

然而,当我从TS获得一组搜索结果时,在尝试从Acts_as_Taggable_On获取tag_counts时出现“无方法”错误。我发现错误扩展到一系列我可能会在标记项集合上调用tag_counts方法的情况。

这些工作:

Owner.first.products.all.tag_counts
Product.where(:color => 'white').tag_counts
Product.first.tag_counts

但这些不是:

Product.all.tag_counts
Product.search('white').to_a.tag_counts

(后者调用Thinking Sphinx搜索,返回TS搜索集合。)

他们带来了这个错误的一些变体:

NoMethodError: undefined method `tag_counts' for #<Array:0x00000101585280>

我有一个模糊的想法,这是某种代理方法的事情,它在前一次调用中正确关联,而不是后者。

有人建议如何确保标记对象数组的tag_counts方法可用吗?

1 个答案:

答案 0 :(得分:0)

Product.all返回一个数组,你试图在该数组上运行方法tag_counts,这个方法不起作用,因为数组没有该方法。

您可能想要做的是:

Product.tag_counts

它应该返回所有产品的标签计数。