Module: ActiveRecord::Validations::ClassMethods

Defined in:
lib/unicode_normalization_validation.rb

Instance Method Summary collapse

Instance Method Details

#validates_unicode_normalization_of(*attr_names) ⇒ Object

Validates that the value of the specified attribute is on a particular Unicode Normalization Form.

class Book < ActiveRecord::Base
  validates_unicode_normalization_of :author
  validates_unicode_normalization_of :editor, :form => :c
  validates_unicode_normalization_of :title, :message => 'Title is not on Unicode Normalization Form KC'
end

Configuration options:

  • :form - Specifies the normalization form to use. Valid normalization forms are :c, :d, :kc, and </tt>:kd</tt>.

  • :message - Specifies a custom error message (default is: “is not on Unicode Normalization form %s”).

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/unicode_normalization_validation.rb', line 17

def validates_unicode_normalization_of(*attr_names)
  configuration = {
    :form      => :kc,
    :message   => 'is not on Unicode Normalization form %s',
  }
  configuration.update(attr_names.extract_options!)

  raise(ArgumentError, "Invalid normalization form") unless [:c, :kc, :d, :kd].include?(configuration[:form])

  validates_each(attr_names, configuration) do |record, attr_name, value|
    record.errors.add(attr_name, configuration[:message] % configuration[:form].to_s.upcase) unless value.nil? or value.mb_chars == value.mb_chars.normalize(configuration[:form])
  end
end