我有一个应用程序,可以在其中列出项目并为每个项目添加标签。
模型项目和标签的关联如下:
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/