0

I have a Library, a Libraryhas many Books.

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

持っている本の数に基づいて注文されるようdefault_scopeにするにはどうすればよいですか? (または、別のアプローチがありますか?)Library.allLibrary

4

1 に答える 1

2

この受け入れられた回答のアドバイスに同意します:

Rails の default_scope をオーバーライドする

可能な限り、デフォルトのスコープは避けてください。スコープだけを使用したとしても、パフォーマンスを向上させるために、SQLを作成する必要があると思いますが、これはちょっと面倒で、移植できない可能性があります。カウンター キャッシュ列を検討することをお勧めします。適切な Rails ガイド リファレンスは次のとおりです。

http://guides.rubyonrails.org/association_basics.html#belongs_to-counter_cache

移行を作成する必要があります。サンプルコードについては、この回答を参照してください。

https://stackoverflow.com/a/1794235/149156

列を作成したら、ブック カウント列で並べ替えるスコープまたはクラス メソッドを作成できます。

于 2013-01-15T04:34:14.740 に答える