Meta_Search:搜索关联条目的数量

时间:2011-08-17 13:28:08

标签: ruby-on-rails meta-search

我有以下Rails模型:

class Entry < ActiveRecord::Base
  has_and_belongs_to_many :tags, :uniq => true
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :entries, :uniq => true
end

就是这样,很明显,'条目'可以有很多与之关联的'标签'。

使用插件Meta_Search我希望能够执行搜索(通过表单),返回与其关联的标签数超过0的“条目”。

我尝试了几种技术,包括(命名)范围和方法,但我无法实现这一目标。

有没有人知道如何执行此操作?

感谢。

2 个答案:

答案 0 :(得分:0)

这样的东西
Entry.joins(
        :tags
      ).select(
        "entries.*, count(tags.id) as tags_count"
      ).order(
        "tags_count DESC"
      ).group( 
        "entries.id"
      ).where(
        "tags_count != 0"
      )

答案 1 :(得分:0)

这类似于按相关记录计数排序:Rails meta_search gem: sort by count of an associated model其中一个答案建议使用counter_cache,但评论表明它不适用于HABTM。

使用可以选择您感兴趣的记录的命名范围(la @ mark的答案)并将其设为search_method