Отлично! Рад, что это будет работать в конце :)

ел бы показать список всех тегов записей, упорядочив их по наиболее часто используемым.

Мой контроллер в настоящее время имеет:

@tag_list = Tag.all

На мой взгляд:

<% @tag_list.each do |tag| %>
  <%= tag.name %>(<%= tag.posts.count %>)
<% end %>

РЕДАКТИРОВАТЬ отношения следующие:

Tag (has_many :posts, :through => :taggings) 
Tagging(belongs_to :tag and belongs_to :post)
Post(has_many :tags, :through => :taggings)

Это показывает все теги с их количеством. Я попытался поиграть с контроллером с помощью Tag.order (..), но не могу показаться хорошим.

Любая помощь приветствуется.

Благодарю.

Ответы на вопрос(1)

Решение Вопроса

использующих тег, добавив опцию counter_cache к ассоциации.

На вашей модели тега:

has_many :posts, :counter_cache => true

На твоих постах модель:

belongs_to :tag, :counter_cache => true

Через миграцию:

add_column :tags, :posts_count, :integer, :null => false, :default => 0

Каждый раз, когда вы добавляете сообщение с этим тегом, счетчик тегов будет увеличиваться на единицу. Затем вы можете выполнить ваш заказ легко:

Tags.order('posts_count')

Более подробную информацию о методах и опциях ActiveRecord Association можно найтиВот.

 Goldy15 янв. 2011 г., 21:56
Спасибо за отзыв ... Я использую отношения Tag (has_many: posts,: through =>: taggings), Tagging (Программное обеспечение )
 Shaun15 янв. 2011 г., 21:58
@Andy: Да, я уверен, что has_and_belongs_to_many, эти отношения не будут работать с counter_cache. Вместо этого вам нужно будет либо вести подсчет вручную через Observer и добавлять функциональность в части after_create / after_destroy жизненного цикла моделей, либо устанавливать отношения has_many: through.
 Shaun15 янв. 2011 г., 21:59
@ Голди: С этими отношениями у тебя все будет хорошо. :)
 Andy Lindeman15 янв. 2011 г., 22:01
Отлично! Рад, что это будет работать в конце :)
 Andy Lindeman15 янв. 2011 г., 21:48
Я не думаю, что будет работать, если сообщение и тег находятся вhas_and_belongs_to отношения ... какие они, вероятно, на самом деле, верно?

Ваш ответ на вопрос