Module: RansackerTranslator::ClassMethods

Defined in:
lib/ransacker_translator/models/concerns/ransacker_translator.rb

Instance Method Summary collapse

Instance Method Details

#ransacker_translate(*columns) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ransacker_translator/models/concerns/ransacker_translator.rb', line 7

def ransacker_translate(*columns)
  columns.each do |column|
    ransacker :"#{column}_translate", formatter: proc {|v| NKF.nkf('-w -XZ0', v.mb_chars) } do |parent|
      single_byte_char = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz !#$%&¥;:'
      double_byte_char = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz !#$%&¥;:'
      Arel::Nodes::NamedFunction.new("UPPER",
                                     [Arel::Nodes::NamedFunction.new("TRANSLATE",
                                                                     [parent.table[column],
                                                                      double_byte_char,
                                                                      single_byte_char].map { |it| Arel::Nodes.build_quoted(it) })
      ])
    end
  end
end