sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

ActiveRecordでSQLを指定して実行する

IN句やEXISTS句はActiveRecordがサポートしていないので、最後の手段でSQLを直打ちするときは、以下のようにする

User.
  find_by_sql([
    'SELECT users.* from users WHERE ' +
      'NOT EXISTS ' +
      '( ' +
      'SELECT hoges.* FROM hoges WHERE ' +
      'hoge.attr = ? AND users.id = hoges.user_id ' +
      ')',
    1])