Rails 3 - default_scope

时间:2011-06-01 18:47:01

标签: ruby-on-rails-3

我想按照受欢迎程度而不是创建日期在我的索引页面上订购文章标签,即从最高到最低的文章中包含最多文章的标签。我的模型如下?

class Tag < ActiveRecord::Base

  attr_accessible :name
  validates :name, :uniqueness => true

  # order by creation
  default_scope :order => 'created_at DESC'

  has_many :taggings, :dependent => :destroy  
  has_many :articles, :through => :taggings
  end

1 个答案:

答案 0 :(得分:5)

我建议使用counter cache column来存储taggings_count(在新标记时会自动更新)。

然后你的默认范围看起来像这样:

default_scope :order => 'taggings_count DESC'

有关详细信息,请在AR associations

的Rails指南中搜索“counter_cache”