Sha256: 3df2a3243f3baed57a226d5754a4b2f53cf8573d1a52838cd9cf40fc9448feb3

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

require 'active_record'

module FlexaLib
  module ActiveRecord
    module PesquisaWrapper
      
      #
      # flexa_search BUSCA
      #
      #   Model.flexa_search(:search => {:text => params[:search], 
      #    :fields => ['nome','cod_cidade']}, :page => params[:page])
      #
      def flexa_search(options)
        options  = options.dup
        
        search_options = options.fetch(:search)        { raise ArgumentError, ":search is required" }
        likes_search   = search_options.fetch(:fields) { raise ArgumentError, ":fields is required" }
        text_search   = search_options.fetch(:text)   { raise ArgumentError, ":text is required" }
        
        text_search ||= ''
        
        options.delete(:search)
        
        if text_search.length > 0 and likes_search.count > 0
          
          likes_search.collect! {|x| "(UPPER("+x+") LIKE UPPER(:search))"}
          paginate(options).where(likes_search.join(' OR '), :search => "%"+text_search.to_s+"%")
        else
          paginate(options)
        end
      end
            
    end #fim do modulo PesquisaWrapper
    
      # adicionar ao ActiveRecord
    ::ActiveRecord::Base.extend PesquisaWrapper
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
flexa_lib-0.3.9 lib/flexa_lib/model_extensions.rb
flexa_lib-0.3.8 lib/flexa_lib/model_extensions.rb
flexa_lib-0.3.7 lib/flexa_lib/model_extensions.rb