4

アプリを MySQL から Postgres に移行しました。以前は、.all の要求はすべての行を ID 順に返しました。Postgres では、行が順不同で返されます。同じく、

Person.first

以前は ID 1 のレコードを返していましたが、現在は別のレコードを返すことがあります。

次のような順序句を追加すると:

Person.order("id").first

クエリは成功し、最初の行が返されます。これは予想される動作ですか?

4

1 に答える 1

4

この投稿はあなたの質問に答えます:

ID による順序付けがデフォルトで保証されているとは思いません。順序付けされていないクエリがどのように返されるかはデータベース次第だと思うからです。次のように、モデルの上部にデフォルトのスコープを定義することで、順序付けすることができます。

default_scope order('id ASC')

次に、Model.all を呼び出すことは、Model.order('id ASC') を呼び出すことと同じです。

于 2013-02-07T15:50:47.857 に答える