SQLを生成するメソッドを呼ぶ順番は生成するSQLに影響しない

RailsSQLを生成するメソッドの呼び出し順でSQLが変化するのか分からなかったのでコンソールで試して調べて見ました。

結論

SQLを生成するメソッドを呼ぶ順番は生成するSQLに影響しない。 下の2つのSQLは同一になる。

Book.all.order(:id)
Book.order(:id).all
$ rails c
> sql_1 = Book.all.order(:id).to_sql
=> "SELECT \"books\".* FROM \"books\" ORDER BY \"books\".\"id\" ASC"
> sql_2 = Book.order(:id).all.to_sql
=> "SELECT \"books\".* FROM \"books\" ORDER BY \"books\".\"id\" ASC"
> sql_1 == sql_2
=> true

まとめ

メソッドの呼び出し順で変化しないことが分かったので良かったです。 Railsはまだまだ入り口にも立てていませんが、一つづつ理解を深めていこうと思います。