app/models/concerns/agilibox/search.rb in agilibox-1.0.9 vs app/models/concerns/agilibox/search.rb in agilibox-1.0.10
- old
+ new
@@ -1,30 +1,30 @@
module Agilibox::Search
extend ActiveSupport::Concern
class_methods do
def default_search_fields
- fields = columns.map do |column|
+ columns.map do |column|
"#{table_name}.#{column.name}"
end
end # def default_search_fields
def search(q, *fields)
words = q.to_s.parameterize.split("-")
fields = default_search_fields if fields.empty?
- sql_query = words.map.with_index do |word, index|
- fields.map do |field|
+ sql_query = words.map.with_index { |_word, index|
+ fields.map { |field|
"(UNACCENT(CAST(#{field} AS TEXT)) ILIKE :w#{index})"
- end.join(" OR ")
- end.map{ |e| "(#{e})" }.join(" AND ")
+ }.join(" OR ")
+ }.map { |e| "(#{e})" }.join(" AND ")
sql_params_a = words.map.with_index do |word, index|
["w#{index}".to_sym, "%#{word}%"]
end
sql_params_h = Hash[sql_params_a]
- self.where(sql_query, sql_params_h)
+ where(sql_query, sql_params_h)
end # def search
end # class_methods
end # class Agilibox::Search