From 8a329b67a5173fb59707156cd491b24fa475139a Mon Sep 17 00:00:00 2001 From: rubic0n Date: Sun, 28 Feb 2021 15:33:38 -0600 Subject: [PATCH] Fix preview card search --- app/models/preview_card.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 36f9de5d..df1748ff 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -48,7 +48,7 @@ class PreviewCard < ApplicationRecord def missing_image? width.present? && height.present? && image_file_name.blank? end - + def save_with_optional_image! save! rescue ActiveRecord::RecordInvalid @@ -57,14 +57,15 @@ class PreviewCard < ApplicationRecord end class << self - def search_for(term, offset = 0) - pattern = '%' + sanitize_sql_like(term.strip) + '%' + SEARCH_FIELDS = %i[title description url].freeze - PreviewCard.where( - "lower(title) LIKE lower('#{pattern}') OR lower(description) LIKE lower('#{pattern}') OR lower(url) LIKE lower('#{pattern}')" - ).order('updated_at DESC').limit(25).offset(offset) + def search_for(term, offset = 0) + pattern = "%#{term.strip}%" + + conditions = SEARCH_FIELDS.map { |f| arel_table[f].matches(pattern) }.reduce(:or) + PreviewCard.where(conditions).order(updated_at: :desc).limit(25).offset(offset) end - + private def image_styles(f)