その他
    ホーム 技術発信 DoRuby findをする際にincludeを指定するとselectが無効になる

    findをする際にincludeを指定するとselectが無効になる

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    ActiveRecord(以下AR)のバージョンが低いとfindでincludeとselectの併用ができません。

    ※確認バージョン:1.14.4

    下記findを実行するとidだけの結果を取得することができます。

    Hoge.find(:all, :select => "id")
    

    ただ古いARでincludeオプションを含めて実行するとselectが効きません。

    Hoge.find(:all, :select => "id", :include => :foo)
    

    対応策としてはincludeの代わりにjoinを使うことで回避をすることはできます。

    冗長になってしまいますが。

    ARのバージョンが新しければ問題無く動作します(2.1で確認)