実現したいこと
deviseなしで複数検索機能を作成したい
前提
二種の検索バーから検索ワードの入力。
条件により、user一覧を表示したい。
現在は名前検索はできているが、affiliation検索ができない。
両方一緒もできない
発生している問題・エラーメッセージ
エラーメッセージ
なし
ruby
1userモデル 2 3 def self.search_by_name(keyword)4 if keyword.present?5 where("first_name LIKE ? OR last_name LIKE ? OR first_name_reading LIKE ? OR last_name_reading LIKE ?", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%")6 else7 all 8 end
ruby
1user_categoryモデル 2 3 def self.search_by_affiliation(affiliation_keyword)4 if affiliation_keyword.present?5 where("affiliation LIKE ?", "%#{affiliation_keyword}%")6 else7 all 8 end9 end
ruby
1コントローラー 2 3def search4 # @users = User.all5 @keyword = params[:keyword]6 @users = User.search_by_name(@keyword)7 @user_categories = UserCategory.search_by_affiliation(@affiliation_keyword)8 9 if @keyword.present?10 # 名前による検索11 name_search = User.where("first_name LIKE ? OR last_name LIKE ? OR first_name_reading LIKE ? OR last_name_reading LIKE ?", "%#{@keyword}%", "%#{@keyword}%", "%#{@keyword}%", "%#{@keyword}%")12 else13 name_search = User.none 14 end15 16 if @affiliation.present?17 # 勤務施設による検索18 affiliation_search = UserCategory.where("affiliation LIKE ?", "%#{@affiliation}%")19 else20 affiliation_search = UserCategory.none 21 end22 23 # 名前と勤務施設の両方を考慮した検索結果を取得24 @search_results = name_search.or(affiliation_search)25
試したこと
各モデルに条件設定。
その後コントローラーで検索欄の名前が空ならaffiliationから検索!ってしたつもりです。
素人のためここが全然違うよ!などご教授いただければと思います。
補足情報(FW/ツールのバージョンなど)
Rails 6.0.6.1
devise-4.9.2

0 コメント