-
Notifications
You must be signed in to change notification settings - Fork 0
pahanix/human-validation
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# Usage examples
# == Please Fill
class Article < ActiveRecord::Base
please_fill :title, :permalink, :body.as("your message")
end
"Please fill Title, Permalink and your message fields"
"Please fill Title field"
"Please fill Permalink field"
"Please fill your message"
# == Please Choose
class Address < ActiveRecord::Base
please_choose :country.as("your country"), :state
end
"Please choose your country and state"
"Please choose your country"
"Please choose state"
class Imaging < ActiveRecord::Base
please_choose "imagings:", :front_imaging.as("front"), :back_imaging.as("back")
end
"Please choose imagings: front and back"
# == Please Make Sure
class Address < ActiveRecord::Base
please_make_sure :zip, :as => "Zip code", :is => [
{ :numeric => { :greater_than => 0 } },
{ :length => 5 },
[:format, /0\d{4}/, "starts with zero"]
]
please_make_sure :zip.as("Zip code"), :is => [
:numeric.greater_than(0),
:length.equals(5),
:format.with(/0\d{4}/, "starts with zero")
]
please_make_sure :zip.as("Zip code").is(
:numeric.greater_than(0, ""),
:length.equals(5, "5 characters long"),
:format.with(/0\d{4}/, "starts with zero")
)
end
"Please make sure that Zip code is numeric, 5 characters long and starts with zero"
"Please make sure that Zip code 5 characters long and starts with zero"
"Please make sure that Zip code starts with zero"
class Adress < ActiveRecord::Base
please_fill :first_name, :last_name, :country.as("Your country"), :state.if(:country_has_state)
def country_has_state
["USA", "Canada"].include? country
end
end
# ==
class Person < ActiveRecord::Base
validates_acceptance_of :terms_of_service
validates_acceptance_of :eula, :message => "must be abided"
please_accept :terms_of_service
end
class Person < ActiveRecord::Base
validates_presence_of :first_name
validates_presence_of :country
please_fill :first_name
please_choose :county
end
class Person < ActiveRecord::Base
validates_uniqueness_of :login
validates_uniqueness_of :user_name, :scope => :account_id
validates_uniqueness_of :teacher_id, :scope => [:semester_id, :class_id]
make_sure :login.is(:uniq)
make_sure :login.is_uniq
make_sure :login, :is => [:uniq, {:case_sensitive => true }, "uniq (case sensitive)"]
make_sure :login, :is => [:uniq.case_sensitive("case sensitive uniq")]
make_sure :user_name, :is => :uniq.scope(:account_id)
make_sure :teacher_id, :is => :uniq.scope([:semester_id, :class_id], "uniq touple(teacher, semester, class)")
end
class Person < ActiveRecord::Base
validates_length_of :first_name, :maximum=>30
validates_length_of :last_name, :maximum=>30, :message=>"less than {{count}} if you don't mind"
validates_length_of :fax, :in => 7..32, :allow_nil => true
validates_length_of :phone, :in => 7..32, :allow_blank => true
validates_length_of :user_name, :within => 6..20, :too_long => "pick a shorter name", :too_short => "pick a longer name"
validates_length_of :fav_bra_size, :minimum => 1, :too_short => "please enter at least {{count}} character"
validates_length_of :smurf_leader, :is => 4, :message => "papa is spelled with {{count}} characters... don't play me."
validates_length_of :essay, :minimum => 100, :too_short => "Your essay must be at least {{count}} words."), :tokenizer => lambda {|str| str.scan(/\w+/) }
make_sure :first_name.has( :length.max(30) )
make_sure :last_name.lenght.max(30, "less than {{count}} if you don't mind")
make_sure :fax.has( length.in(7..32).or_nil )
make_sure :phone.length.in(7..32).or_blank
make_sure :user_name.is(
# :length.within(6..20, :too_short => "pick a shorter name", :too_long => "pick a longer name").
:length.within(6..20, "pick a shorter name", "pick a longer name").
)
make_sure :smurf_leader.length.is(4, "papa is spelled with {{count}} characters... don't play me.")
# min => too_short(message)
# max => too_long(message)
make_sure :essay.length.min(100, "Your essay must be at least {{count}} words.").
tokenizer( lambda {|str| str.scan(/\w+/) } )
end
class Person < ActiveRecord::Base
EMAIL_REGEXP = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
validates_presence_of :email
validates_uniqueness_of :email, :case_sensitive => true
validates_length_of :email, :in => 7..32
validates_format_of :email, :with => EMAIL_REGEXP
please_fill :email;
and_make_sure :email, :is => :uniq, [:length, 5..128] }, [:format, EMAIL_REGEXP]]
please_fill :email; and_make_sure :email.is(
:uniq.case_sensitive.scope(:account_id), :length.in(5..128), :format.with(EMAIL_REGEXP)
)
please_fill_and_make_sure :email.is(
:uniq.case_sensitive.scope(:account_id), :length.in(5..128), :format.with(EMAIL_REGEXP)
)
validates_presence_of :login
validates_uniqueness_of :login, :case_sensitive => true
validates_presence_of :email
validates_uniqueness_of :email, :scope => :account_id
validates_length_of :email, :in => 7..32
validates_format_of :email, :with => EMAIL_REGEXP
please_fill_and_make_sure :login.as("Username").is(:uniq.case_sensitive),
:email.is(
:uniq.scope(:account_id),
:length.in(5..128),
:format.with(EMAIL_REGEXP)
)
make_sure :login.as("Username").is(
:present, # :filled
:uniq.case_sensitive
),
:email.is(
:present, # :filled
:uniq.scope(:account_id),
:length.in(5..128),
:format.with(EMAIL_REGEXP)
)
end
class Person < ActiveRecord::Base
validates_inclusion_of :gender, :in => %w( m f ), :message => "woah! what are you then!??!!"
validates_inclusion_of :age, :in => 0..99
validates_inclusion_of :format, :in => %w( jpg gif png ), :message => "extension {{value}} is not included in the list"
please_make_sure :age.in(1..100)
please_choose :format.from(%w( jpg gif png ), "extention {{value}} is not included in the list")
end
class Person < ActiveRecord::Base
validates_numericality_of :value, :on => :create
please_make_sure :value.is(:numeric.less_than_or_equal_to(100))
end
About
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published