【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
筆者オススメ技術書
リンク