Last active
December 29, 2015 20:19
-
-
Save akshay-vishnoi/7722706 to your computer and use it in GitHub Desktop.
Error messages for exclusion and inclusion
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'active_model' | |
class Account | |
include ActiveModel::Model | |
attr_accessor :subdomain, :subdomain1, :subdomain2, :subdomain3, :size, :size1, :size2, :size3 | |
validates :subdomain, exclusion: { in: %w(www us ca jp) } | |
validates :subdomain1, exclusion: { in: %w(www us ca jp), message: "is reserverd" } | |
validates :subdomain2, exclusion: { in: %w(www us ca jp), message: "%{value} is reserverd" } | |
validates :subdomain3, exclusion: { in: %w(www us ca jp), message: "Subdomain %{value} is reserverd" } | |
validates :size, inclusion: { in: %w(small medium large) } | |
validates :size1, inclusion: { in: %w(small medium large), message: "is not included in the list" } | |
validates :size2, inclusion: { in: %w(small medium large), message: "%{value} is not included in the list" } | |
validates :size3, inclusion: { in: %w(small medium large), message: "Size %{value} is not included in the list" } | |
end | |
a = Account.new | |
a.subdomain = 'www' | |
a.subdomain1 = 'www' | |
a.subdomain2 = 'www' | |
a.subdomain3 = 'www' | |
a.size = 'very large' | |
a.size1 = 'very large' | |
a.size2 = 'very large' | |
a.size3 = 'very large' | |
a.valid? | |
puts 'Using only `errors.messages`' | |
puts a.errors.messages.each { |key, value| puts "#{ key } : #{ value }" } | |
puts 'Using `errors.full_messages' | |
a.errors.full_messages | |
# => Output: | |
# => Using only `errors.messages` | |
# => subdomain : ["is reserverd"] | |
# => subdomain1 : ["is reserverd"] | |
# => subdomain2 : ["www is reserverd"] | |
# => subdomain3 : ["Subdomain www is reserverd"] | |
# => size : ["is not included in the list"] | |
# => size1 : ["is not included in the list"] | |
# => size2 : ["very large is not included in the list"] | |
# => size3 : ["Size very large is not included in the list"] | |
# => Using `errors.full_messages` | |
# => Subdomain is reserverd | |
# => Subdomain1 is reserverd | |
# => Subdomain2 www is reserverd | |
# => Subdomain3 Subdomain www is reserverd | |
# => Size is not included in the list | |
# => Size1 is not included in the list | |
# => Size2 very large is not included in the list | |
# => Size3 Size very large is not included in the list |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment