Rails 3 - default_scope



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

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

我建议使用计数器缓存列来存储taggings_count(在新标记时会自动更新)。

然后你的默认范围可以是这样的:

default_scope :order => 'taggings_count DESC'

有关更多信息,请在Rails指南中搜索"counter_cache"以查找AR关联

相关内容

  • 没有找到相关文章

最新更新