0

たまたま線が見えた

Item.where(conditions).limit(10).order('created_at desc')

そして、それは似ているのだろうか

Item.where(conditions).order('created_at desc').limit(10)

Rails 3の新しい変更により、問題がないようです。アクティブレコード

しかし、必要に応じて、*created_at*で並べ替えられた10個のアイテムを試してみてください。これが私の質問#1でした

質問2は、「limit」はクエリ内で機能しますが、「sample」は機能しません。

4

1 に答える 1

0

railscastエピソード239アクティブリレーションウォークスルーをチェックして、それがどのように機能するかを理解することをお勧めします。

基本的に、内部作業はArel gemによって行われ、activerecordオブジェクトは、チェーンを実行するときにarelオブジェクトを維持するだけです。1日の終わりまでにarel、SQLステートメントを生成し、生成されたSQLステートメントを使用してを呼び出しますfind_by_sql

order問題は、前に呼び出したlimit場合でも、その逆の場合でも、生成されたsqlステートメントは単純に同じであるということです。すべてがデータベースバックエンドによって実行され、activerecordは単に結果を解析してオブジェクトを構築します。

于 2012-05-28T14:24:04.637 に答える