pools: switch from search[name_matches] to search[name_contains].
The previous commit changed it so that `/pools?search[name_matches]` does a full-text search. So for example, `search[name_matches]=smiling` will now match pool names containing any of the words "smiling", "smile", "smiles", or "smiled". This commit adds a `/pools?search[name_contains]` param that does what `name_matches` did before, and switches to it in search forms. So for example, `search[name_contains]=smiling` will only match pool names containing the exact substring "smiling". This change is so that `<field>_matches` works consistently across the site, and so that it's possible to search pool names by either an exact substring match, or by a looser natural language match. This is a minor breaking API change. API users can replace `/pools?search[name_matches]` with `/pools?search[name_contains]` to get the same behavior as before. The same applies to /favorite_groups.
This commit is contained in:
@@ -27,7 +27,7 @@ class PoolVersion < ApplicationRecord
|
||||
where_array_includes_any(:added_post_ids, [post_id]).or(where_array_includes_any(:removed_post_ids, [post_id]))
|
||||
end
|
||||
|
||||
def name_matches(name)
|
||||
def name_contains(name)
|
||||
name = normalize_name_for_search(name)
|
||||
name = "*#{name}*" unless name =~ /\*/
|
||||
where_ilike(:name, name)
|
||||
@@ -40,8 +40,8 @@ class PoolVersion < ApplicationRecord
|
||||
q = q.for_post_id(params[:post_id].to_i)
|
||||
end
|
||||
|
||||
if params[:name_matches].present?
|
||||
q = q.name_matches(params[:name_matches])
|
||||
if params[:name_contains].present?
|
||||
q = q.name_contains(params[:name_contains])
|
||||
end
|
||||
|
||||
if params[:updater_name].present?
|
||||
|
||||
Reference in New Issue
Block a user