eliminate ambiguities in pool search
This commit is contained in:
@@ -24,29 +24,29 @@ class Pool < ApplicationRecord
|
|||||||
|
|
||||||
module SearchMethods
|
module SearchMethods
|
||||||
def deleted
|
def deleted
|
||||||
where("is_deleted = true")
|
where("pools.is_deleted = true")
|
||||||
end
|
end
|
||||||
|
|
||||||
def undeleted
|
def undeleted
|
||||||
where("is_deleted = false")
|
where("pools.is_deleted = false")
|
||||||
end
|
end
|
||||||
|
|
||||||
def series
|
def series
|
||||||
where("category = ?", "series")
|
where("pools.category = ?", "series")
|
||||||
end
|
end
|
||||||
|
|
||||||
def collection
|
def collection
|
||||||
where("category = ?", "collection")
|
where("pools.category = ?", "collection")
|
||||||
end
|
end
|
||||||
|
|
||||||
def series_first
|
def series_first
|
||||||
order("(case category when 'series' then 0 else 1 end), name")
|
order("(case pools.category when 'series' then 0 else 1 end), pools.name")
|
||||||
end
|
end
|
||||||
|
|
||||||
def name_matches(name)
|
def name_matches(name)
|
||||||
name = normalize_name_for_search(name)
|
name = normalize_name_for_search(name)
|
||||||
name = "*#{name}*" unless name =~ /\*/
|
name = "*#{name}*" unless name =~ /\*/
|
||||||
where("lower(name) like ? escape E'\\\\'", name.to_escaped_for_sql_like)
|
where("lower(pools.name) like ? escape E'\\\\'", name.to_escaped_for_sql_like)
|
||||||
end
|
end
|
||||||
|
|
||||||
def search(params)
|
def search(params)
|
||||||
@@ -58,15 +58,15 @@ class Pool < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
if params[:id].present?
|
if params[:id].present?
|
||||||
q = q.where("id in (?)", params[:id].split(","))
|
q = q.where("pools.id in (?)", params[:id].split(","))
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:description_matches].present?
|
if params[:description_matches].present?
|
||||||
q = q.where("lower(description) like ? escape E'\\\\'", "%" + params[:description_matches].mb_chars.downcase.to_escaped_for_sql_like + "%")
|
q = q.where("lower(pools.description) like ? escape E'\\\\'", "%" + params[:description_matches].mb_chars.downcase.to_escaped_for_sql_like + "%")
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:creator_name].present?
|
if params[:creator_name].present?
|
||||||
q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].tr(" ", "_").mb_chars.downcase)
|
q = q.where("pools.creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].tr(" ", "_").mb_chars.downcase)
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:creator_id].present?
|
if params[:creator_id].present?
|
||||||
@@ -74,21 +74,21 @@ class Pool < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
if params[:is_active] == "true"
|
if params[:is_active] == "true"
|
||||||
q = q.where("is_active = true")
|
q = q.where("pools.is_active = true")
|
||||||
elsif params[:is_active] == "false"
|
elsif params[:is_active] == "false"
|
||||||
q = q.where("is_active = false")
|
q = q.where("pools.is_active = false")
|
||||||
end
|
end
|
||||||
|
|
||||||
params[:order] ||= params.delete(:sort)
|
params[:order] ||= params.delete(:sort)
|
||||||
case params[:order]
|
case params[:order]
|
||||||
when "name"
|
when "name"
|
||||||
q = q.order("name")
|
q = q.order("pools.name")
|
||||||
when "created_at"
|
when "created_at"
|
||||||
q = q.order("created_at desc")
|
q = q.order("pools.created_at desc")
|
||||||
when "post_count"
|
when "post_count"
|
||||||
q = q.order("post_count desc")
|
q = q.order("pools.post_count desc")
|
||||||
else
|
else
|
||||||
q = q.order("updated_at desc")
|
q = q.order("pools.updated_at desc")
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:category] == "series"
|
if params[:category] == "series"
|
||||||
@@ -135,9 +135,9 @@ class Pool < ApplicationRecord
|
|||||||
|
|
||||||
def self.find_by_name(name)
|
def self.find_by_name(name)
|
||||||
if name =~ /^\d+$/
|
if name =~ /^\d+$/
|
||||||
where("id = ?", name.to_i).first
|
where("pools.id = ?", name.to_i).first
|
||||||
elsif name
|
elsif name
|
||||||
where("lower(name) = ?", normalize_name_for_search(name)).first
|
where("lower(pools.name) = ?", normalize_name_for_search(name)).first
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user