Module: FlexaLib::ActiveRecord::PesquisaWrapper

Defined in:
lib/flexa_lib/model_extensions.rb

Instance Method Summary collapse

Instance Method Details

#flexa_search(options) ⇒ Object

flexa_search BUSCA

Model.flexa_search(:search => {:text => params[:search], 
 :fields => ['nome','cod_cidade']}, :page => params[:page])


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/flexa_lib/model_extensions.rb', line 13

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