作者对象 has_many 文章, 根据发布文章的多少对作者进行排序, 实现好似简单, 而在 rails 中,有什么的好的写法?
我这个办法有没有问题?我以前就是这么用的。。
Author.joins(:articles).select("count(articles.id) as article_count").group("authors.id").order("article_count")
2 楼的办法还没见过。。一会儿研究一下
class Post
include Mongoid::Document
belongs_to :user, :counter_cache => true
end
class User
include Mongoid::Document
field :posts_count, :type => Integer
has_many :posts
index :posts_count
# 文章多的用户倒序排列
scope :hot, desc(:posts_count)
end
@hot_users = User.hot.limit(10)
这是 Mongoid 的写法,ActiveRecord 类似,转换一下就好了。
#14 楼 @stephen CounterCache 在 Rails Guides 里面有介绍 http://guides.rubyonrails.org/association_basics.html#belongs_to-counter_cache
#17 楼 @stephen 这个看 Mongoid 的文档里面有介绍 http://mongoid.org/docs/querying/criteria.html#desc
#17 楼 @stephen http://mongoid.org/docs/querying/criteria.html#desc 这是 mongoid 的写法,AR 找 order