【Rails】GROUP BY句で外部キーを指定したところ、ActiveRecord::StatementInvalidになる

目次

外部キーのグループ化で、地味に躓いたので記事としてまとめます!

問題

GROUP BY句で外部キーを指定して、インスタンスを取り出そうとするとエラーが起きました。

現象


groupメソッドで、外部キーであるオフィスIDを指定し、条件に該当するインスタンスを複数得ることができます。
ここまではエラーは発生しません。


次に、インスタンスを取り出そうとすると、この段階でエラーが発生する。

調査

エラーが起きた時のSQLをみていきます。

→意図せず、デフォルトでusersテーブルの主キーである、IDでsortしようとしていました。

回避方法

明示的に、値の存在する外部キーでsortすることで、インスタンスを取り出すことができました!

最後に

挙動としては、デフォルトで主キーsortされることでエラーになっていました。
外部キーのグループ化では気をつけたいです!