我需要读一下tag_id在listings_tags db表中显示的次数。 标签通过“清单”表单输入系统。 我有一个只列出标签的页面。
电流
tag1()
tag2()
tag3()
tag4()
所需
tag1(40)
tag2(22)
tag3(5)
tag4(4)
可能相关的代码
架构
create_table "listings_tags", :id => false, :force => true do |t|
t.integer "listing_id"
t.integer "tag_id"
end
create_table "tags", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :listings
validates_uniqueness_of :name
class Listing < ActiveRecord::Base
belongs_to :profile
has_and_belongs_to_many :tags
答案 0 :(得分:0)
首先,不鼓励使用has_and_belongs_to_many-Association。 最好使用连接模型:
class Tag < ActiveRecord::Base
has_many :listings, :through => :listing_tagging
end
class Listing < ActiveRecord::Base
has_many :tags, :through => :listing_tagging
end
class ListingTagging < ActiveRecord::Base
belongs_to :tag
belongs_to :listing
end
这可以让你说出类似的内容:
ListingTagging.select("tag_id, COUNT(tag_id) as tagging_count")
.group(:tag_id)
.order("tagging_count DESC")
.limit(10)
.map { |t| [t.id, t.tagging_count] }
# => [[tag_id1, tagging_count_1], ... ]