title: Ransack gem - Case insensitive search
body: <p>Using Ransack gem, I wanna to do like this </p>
  
  <p><a href="https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching#i_cont-work-in-progress-dont-use-yet" rel="nofollow">https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching#i_cont-work-in-progress-dont-use-yet</a></p>
  
  <pre><code> &gt;&gt; User.search(first_name_i_cont: 'Rya').result.to_sql
  =&gt; SELECT "users".* FROM "users"  WHERE (UPPER("users"."first_name") LIKE UPPER('%Rya%'))
  </code></pre>
  
  <p>but this method not work yet.</p>
  
  <p>so I tried to do figure out , is there other way can do it
  I got some information about how to do</p>
  
  <pre><code>//in model
  
    ransacker :ig_case, formatter: proc { |v| v.mb_chars.upcase.to_s } do |parent|
      Arel::Nodes::NamedFunction.new('UPPER',[parent.table[:firstname]])
    end
  
  //in config/ranrack.rb
  
  Ransack.configure do |config|
    config.add_predicate 'ig_case', # Name your predicate
      arel_predicate: 'matches',
      formatter: proc { |v| "%#{v.to_s.gsub(/([\\|\%|.])/, '\\\\\\1').mb_chars.upcase}%"},
      validator: proc { |v| v.present? },
      compounds: true,
      type: :string
  end
  
     // use way
  User.search({ firstname_or_lastname_ig_case: "ABC"}).result.to_sql
  
  =&gt; "SELECT `Users`.* FROM `Users` WHERE ((UPPER(`users`.`firstname`) LIKE '%ABC%' OR (`users`.`lastname`) LIKE '%ABC%'))"
  </code></pre>
  
  <p>after few hours, I found I just can get upper case one field each time when I used in model way.</p>
  
  <p>I can upcase all field if I choice in config way but I can't get sql like this 
  'UPPER("users"."first_name")'</p>
  
  <p>Is there any solution? I really really thanks.</p>