我有一个应用程序,可以在其中列出项目并为每个项目添加标签。
模型项目标签的关联如下:

class Item < ActiveRecord::Base
  has_many :taggings
  has_many :tags, :through => :taggings
end

class Tagging < ActiveRecord::Base
  belongs_to :item
  belongs_to :tag
end

class Tag < ActiveRecord::Base
  has_many :taggings
  has_many :items, :through => :taggings
end

因此,这种多对多关系使我可以为每个项目设置标签,并且同一标签可以使用多次。

我想按与该标签关联的项目数列出所有标签。使用更多的标签,首先显示。较少使用,最后。

我怎样才能做到这一点?

问候。

最佳答案

Tag.joins(:taggings).select('tags.*, count(tag_id) as "tag_count"').group(:tag_id).order(' tag_count desc')

试试desc,asc,看看有什么不同。

我们需要选择具有tag_count列,并且需要tag_count列对其应用顺序,其余所有直接连接和分组。

顺便说一句,你为什么不试试这个https://github.com/mbleigh/acts-as-taggable-on

关于ruby - 在has_many :through上按计数对Rails 3进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10957025/

10-10 20:57