From b761c3b0f91cd93dc46e37a78941d7ee63682e09 Mon Sep 17 00:00:00 2001 From: nakamu-kazu222 Date: Tue, 11 Feb 2025 17:07:09 +0900 Subject: [PATCH] =?UTF-8?q?User#index=E3=81=A7=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E3=82=AD=E3=83=BC=E3=83=AF=E3=83=BC=E3=83=89?= =?UTF-8?q?=E6=A4=9C=E7=B4=A2=E3=82=92=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/searchable.rb | 7 ++++--- app/models/search_user.rb | 8 ++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/models/concerns/searchable.rb b/app/models/concerns/searchable.rb index 5deeb404168..dddae1b25c0 100644 --- a/app/models/concerns/searchable.rb +++ b/app/models/concerns/searchable.rb @@ -21,16 +21,17 @@ def columns_for_keyword_search(*column_names) private def params_for_keyword_search(searched_values = {}) - return {} if searched_values[:words].blank? + return {} if searched_values[:word].blank? - groupings = searched_values[:words].map do |word| + groupings = searched_values[:word].split(/[[:blank:]]+/).map do |word| if word.start_with?('user:') create_parameter_for_search_user_id(word.delete_prefix('user:')) else { _join_column_names => word } end end - { combinator: 'and', groupings: } + + { combinator: 'or', groupings: groupings } end def word_to_groupings(word) diff --git a/app/models/search_user.rb b/app/models/search_user.rb index 5ccda8c14fd..95da53c75bf 100644 --- a/app/models/search_user.rb +++ b/app/models/search_user.rb @@ -10,9 +10,7 @@ def initialize(word:, users: nil, target: nil, require_retire_user: false) def search validated_search_word = validate_search_word - return User.none if validated_search_word.blank? - - searched_user = @users ? @users.search_by_keywords(words: [validated_search_word]) : User.search_by_keywords({ words: [validated_search_word] }) + searched_user = @users ? @users.merge(User.search_by_keywords(word: validated_search_word)) : User.search_by_keywords(word: validated_search_word) if @target == 'retired' searched_user.unscope(where: :retired_on).retired @@ -24,11 +22,9 @@ def search end def validate_search_word - return '' if @word.nil? - stripped_word = @word.strip if stripped_word.match?(/^[\w-]+$/) - stripped_word.length >= 3 ? stripped_word : nil + stripped_word if stripped_word.length >= 3 elsif stripped_word.length >= 2 stripped_word end