Нужно посчитать идентификаторы тегов - PullRequest
0 голосов
/ 28 октября 2010

Мне нужно прочитать, сколько раз tag_id отображается в таблице db lists_tags.Теги вводятся в систему через форму объявлений.У меня есть страница, на которой перечислены только теги.

текущий

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

1 Ответ

0 голосов
/ 28 октября 2010

Прежде всего, использование ассоциации has_and_belongs_to_many не рекомендуется. Лучше использовать модель соединения:

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], ... ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...