Railsからはじめるプログラミング日記

駆け出しプログラマー(主にRuby on Rails)の業務で役立ったコードをメモしていくブログです。自分だけでなく誰かの役に立てれば本望です。

【rails】whereで同一項目内の複数条件を指定したい場合

業務で企業の業務サポートシステムを作っているときに使いました。

企業のユーザにはいくつか権限があって、「管理者(admin)」と「担当者(manager)」「一般ユーザ(general)」がいたとします。

権限のあるadminとmanagerだけを取り出したいときどうするか

同一項目で検索したいとき

値の部分を配列で複数指定することで持ってこれます。

User.where(type: ['admin', 'manager'])

違う項目で検索したいとき

例)権限が「admin」か名字が「鈴木」だったら

whereに.orをつなげて検索することができます(rails5から)。

User.where(type: 'admin').or(User.where(family: '鈴木'))

おまけ

modelにscope書いておいたら楽に使い回せますよね

【user.rb】
scope :administrators, -> {where(type: ['admin', 'manager'])}

【users_controller.rb】
@users = User.administrators

筆者オススメ技術書