diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-12-02 02:53:44 +0300 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-12-08 00:57:26 +0300 |
commit | e48391b813d3e5079238aa3f0662e7a46e1b4a54 (patch) | |
tree | bc7abec1eb4b27a16dcf47d09483b967bffdd3a8 /app/validators/color_validator.rb | |
parent | b3200c8c44f2351d88d5d78d7ded3ac06001bd7c (diff) |
Add custom ColorValidator
Diffstat (limited to 'app/validators/color_validator.rb')
-rw-r--r-- | app/validators/color_validator.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/validators/color_validator.rb b/app/validators/color_validator.rb new file mode 100644 index 00000000000..571d0007aa2 --- /dev/null +++ b/app/validators/color_validator.rb @@ -0,0 +1,20 @@ +# ColorValidator +# +# Custom validator for web color codes. It requires the leading hash symbol and +# will accept RGB triplet or hexadecimal formats. +# +# Example: +# +# class User < ActiveRecord::Base +# validates :background_color, allow_blank: true, color: true +# end +# +class ColorValidator < ActiveModel::EachValidator + PATTERN = /\A\#[0-9A-Fa-f]{3}{1,2}+\Z/.freeze + + def validate_each(record, attribute, value) + unless value =~ PATTERN + record.errors.add(attribute, "must be a valid color code") + end + end +end |