Rails 絞り込み検索機能のコントローラーの記法について
このようなフォームから検索ボタンで、性別、年代、キーワードの情報をrailsに送信し、当てはまる条件のユーザーを返すコードを記述したのですが、正常に機能するものの記述の方法に疑問があります。いかが記述したコードです。
def search
users = User.all
users = users.where(sex: user_params[:sex]) if user_params[:sex].present?
users = users.where(age: user_params[:age]) if user_params[:age].present?
users = users.where('name LIKE(?) or profile LIKE(?) or favorite LIKE(?)',"%#{user_params[:key_word]}%","%#{user_params[:key_word]}%","%#{user_params[:key_word]}%") if user_params[:key_word].present?
render json:{ status: 200, users: users }
end
private
def user_params
params.permit(:name, :sex, :age, :favorite, :profile,:key_word)
end
フォームで指定しないを選択するとから文字が送信されるようになっているので、ifで条件の指定があれば絞り込みを行うようにしています。
usersを繰り返し使用して絞り込んでいく部分や、後置ifを使うべきかどうかについて、皆さんでしたらどのように記述、実装するか参考にさせていただけると幸いです。
0