Module: ActiveRecord::Validations::ClassMethods
- Defined in:
- lib/unicode_normalization_validation.rb
Instance Method Summary collapse
-
#validates_unicode_normalization_of(*attr_names) ⇒ Object
Validates that the value of the specified attribute is on a particular Unicode Normalization Form.
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”).
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.) 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 |