Skip to content

Instantly share code, notes, and snippets.

@akshay-vishnoi
Last active December 29, 2015 20:19
Show Gist options
  • Save akshay-vishnoi/7722706 to your computer and use it in GitHub Desktop.
Save akshay-vishnoi/7722706 to your computer and use it in GitHub Desktop.
Error messages for exclusion and inclusion
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