lib/manage/fields/searcher.rb in manage-1.3.20 vs lib/manage/fields/searcher.rb in manage-1.3.21

- old
+ new

@@ -1,51 +1,51 @@ -module Manage - module Fields - class Searcher - class << self - def generate_search_object(resource_class, search_fields) - search_class = Class.new do - include SearchObject.module(:model, :sorting) - - def escape_search_term(term) - "%#{term.gsub(/\s+/, '%')}%".downcase - end - - def parse_date(date) - Date.strptime(date, '%Y-%m-%d') rescue nil - end - end - - - search_class.scope { resource_class.all } - Object.const_set("#{resource_class.name.gsub(/:/, '')}Searcher", search_class) - - search_fields.select {|f| not f.to_s.include?('.')}.each do |field| - field_type = resource_class.columns_hash[field.to_s].type - case field_type - when *[:text, :string] - search_class.option field.to_sym do |scope, value| - value.blank? ? scope : scope.where("lower(#{field.to_s}) LIKE lower(?)", escape_search_term(value)) - end - when :datetime - search_class.option field.to_sym do |scope, value| - date = parse_date value - scope.where("DATE(#{field.to_s}) >= ?", date) if date.present? - end - when :integer - search_class.option field.to_sym - when :boolean - search_class.option field.to_sym - else - search_class.option field.to_sym do |scope, value| - scope.where "#{field.to_s} = '?'", escape_search_term(value) - end - end - end - - search_class - end - end - end - end -end - +module Manage + module Fields + class Searcher + class << self + def generate_search_object(resource_class, search_fields) + search_class = Class.new do + include SearchObject.module(:model, :sorting) + + def escape_search_term(term) + "%#{term.gsub(/\s+/, '%')}%".downcase + end + + def parse_date(date) + Date.strptime(date, '%Y-%m-%d') rescue nil + end + end + + + search_class.scope { resource_class.all } + Object.const_set("#{resource_class.name.gsub(/:/, '')}Searcher", search_class) + + search_fields.select {|f| not f.to_s.include?('.')}.each do |field| + field_type = resource_class.columns_hash[field.to_s].type + case field_type + when *[:text, :string] + search_class.option field.to_sym do |scope, value| + value.blank? ? scope : scope.where("lower(#{field.to_s}) LIKE lower(?)", escape_search_term(value)) + end + when :datetime + search_class.option field.to_sym do |scope, value| + date = parse_date value + scope.where("DATE(#{field.to_s}) >= ?", date) if date.present? + end + when :integer + search_class.option field.to_sym + when :boolean + search_class.option field.to_sym + else + search_class.option field.to_sym do |scope, value| + scope.where "#{field.to_s} = '?'", escape_search_term(value) + end + end + end + + search_class + end + end + end + end +end +