scoped_search
scoped_search copied to clipboard
Really odd error report from an innocuous search string
Environment:
- Rails 7.0.8.3
-
scoped_search
(4.1.11) - MariaDB 15.1
-
mysql2
0.5.4
I have a scoped_search
set on a single column, and the user entered a long-ish query string:
action_dispatch.request.parameters: {"p"=>"every fact which has a beginning has a cause", "controller"=>"people", "action"=>"quoted_search"}
Which resulted in this error report:
A ScopedSearch::QueryNotSupported occurred in people#quoted_search:
Field 'a' not recognized for searching!
app/controllers/people_controller.rb:158:in `quoted_search'
That might be coming from https://github.com/wvanbergen/scoped_search/blob/master/lib/scoped_search/query_builder.rb#L476 or https://github.com/wvanbergen/scoped_search/blob/master/lib/scoped_search/query_builder.rb#L509, but I can't see why either would be relevant. Is there anything about the words in the request such that a
might be interpreted as being a column name?
The model has this definition:
scoped_search on: %i[search_name]
(search_name
is just a downcased and simplified version of the name, created with parameterize.gsub('-', ' ')
)
The controller uses it here:
def quoted_search
@term = params.fetch(:p, '')
@people = []
@people = Person.quote_authors
.distinct
.search_for(@term).limit(40) if @term.length > 2
render :quoted, formats: [ :turbo_stream ]
end
I just can't see why Scoped Search was considering part of the query string as a mention of a column. There were no control characters or quotes in the input. Can anyone see something I have missed here?