0
class Foo < ActiveRecord::Base {
   has_many :bars
}

foo = Foo.find(1)
foo.bars.count

これはバーの数を数える最良の方法ですか、それとも効率的な方法はありますか

4

2 に答える 2

3

モデルが完全に正規化されている場合、これが最も効率的な方法になります。

これを頻繁に行う必要がある場合は、barsカウントをFooテーブルにキャッシュできます。

Railscast のエピソード 23では、カウンター キャッシュについて説明しています。この情報は、現在の Rails バージョンでも正しいものです。

于 2012-11-29T10:50:54.873 に答える
1

はい、ActiveRecord が適切な SELECT COUNT(*) SQL 文に変換するため、これが最も効率的な方法です。これは、すべてのレコード データをロードして配列でカウントするよりもはるかに効率的です。

于 2012-11-29T10:55:34.923 に答える