我有以下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的“条目”。
我尝试了几种技术,包括(命名)范围和方法,但我无法实现这一目标。
有没有人知道如何执行此操作?
感谢。
答案 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
。