module Mongoid::Collation::ClassMethods

Public Instance Methods

collation(field, options = {}) click to toggle source
# File lib/mongoid_collation.rb, line 69
def collation(field, options = {})
  raise ':locale option is required' unless options[:locale]

  options[:suffix] ||= :collated

  field_collated = "#{field}_#{options[:suffix]}"
  field field_collated, type: String

  self.collation_aliases[field.to_s] = field_collated

  collator = TwitterCldr::Collation::Collator.new(options[:locale])

  before_save do
    sort_key = collator.get_sort_key(send(field))
    send("#{field_collated}=", sort_key.map { |i| i.to_s(16) }.join)
  end
end