Rails基于关联计数的默认范围排序

时间:2013-01-15 04:08:02

标签: ruby-on-rails

我有一个LibraryLibrary有很多Book个。

class Library < ActiveRecord::Base
  has_many :book_collectings
  has_many :books, through: :book_collectings

如何使用default_scope根据Library.all的图书数量订购Library? (或者有不同的方法吗?)

1 个答案:

答案 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

创建列后,您可以创建范围或类方法,以按书计数列排序。