3

私は Rails ボートに乗ったばかりです。クエリの 2 種類の構文の違いを知りたいです。

最初に試したのは次のとおりです。

User.limit(8).order('created_at DESC').group('created_at').count

2 つ目は、はるかに効率的で強力なようです。

User.count(:order =>'DATE(created_at) DESC', :group =>["DATE(created_at)"], :limit => 8) 

しかし、私は両方のユースケースを本当に理解していません。とにかくこれは明らかなことだと確信しています...ありがとう!

4

3 に答える 3

7

1 つ目は Rails 3 の構文です。limit, order, groupそして、そこで使われるそれぞれのメソッド、つまりActiveRecord:: Relationメソッドです。1 番目の方法を使用すると、さまざまな利点があります。ActiveRecord::Relation は、アセット パイプラインなどとは別に、Rails 3 のコア機能の 1 つです。

これを読んで下さい、

http://asciicasts.com/episodes/239-activerecord-relation-walkthrough

于 2012-10-31T11:45:00.450 に答える
0

2 つ目は強力で効率的です。最初のものはすべての行(およびすべての列)を取得してからカウントするためです。しかし、2 つ目は行のカウントのみを実行します。

2 つ目は、次のクエリを使用します。

テーブル名から count(*) を選択します。

于 2012-10-31T11:47:38.713 に答える
0

2 番目の構文は、非推奨の旧式の構文です。ハッシュ オプション オーバーロードとも呼ばれます。最初の連鎖構文は、前進する方法です。

于 2012-10-31T11:35:24.590 に答える