我有一个Library
,Library
有很多Book
个。
class Library < ActiveRecord::Base
has_many :book_collectings
has_many :books, through: :book_collectings
如何使用default_scope
根据Library.all
的图书数量订购Library
? (或者有不同的方法吗?)
答案 0 :(得分:2)
我同意这个被接受的答案的建议:
Overriding a Rails default_scope
尽可能避免默认范围。即使你只使用了一个作用域,但是我认为你必须编写一些可能有点痛苦并且可能无法移植的SQL。我建议考虑一个计数器缓存列。这是适当的Rails指南参考:
http://guides.rubyonrails.org/association_basics.html#belongs_to-counter_cache
您需要创建迁移。有关示例代码,请参阅此答案:
https://stackoverflow.com/a/1794235/149156
创建列后,您可以创建范围或类方法,以按书计数列排序。