aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/validations
diff options
context:
space:
mode:
authorRoberto Vasquez Angel <robotex@robotex.de>2012-07-25 17:07:05 +0200
committerSteve Klabnik <steve@steveklabnik.com>2012-12-15 16:27:44 -0500
commitd72a07f1d1478db9daed847eadb35bfd840674f6 (patch)
treea48970e3b40c23c23e52249f2a7a61f85fcf94d1 /activemodel/lib/active_model/validations
parentc298ee403d60db6b082539c8dd4f95754034274d (diff)
downloadrails-d72a07f1d1478db9daed847eadb35bfd840674f6.tar.gz
rails-d72a07f1d1478db9daed847eadb35bfd840674f6.tar.bz2
rails-d72a07f1d1478db9daed847eadb35bfd840674f6.zip
Add `ActiveModel::Validations::AbsenceValidator`, a validator to check the absence of attributes.
Add `ActiveModel::Errors#add_on_present` method. Adds error messages to present attributes.
Diffstat (limited to 'activemodel/lib/active_model/validations')
-rw-r--r--activemodel/lib/active_model/validations/absence.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/validations/absence.rb b/activemodel/lib/active_model/validations/absence.rb
new file mode 100644
index 0000000000..6790554907
--- /dev/null
+++ b/activemodel/lib/active_model/validations/absence.rb
@@ -0,0 +1,31 @@
+module ActiveModel
+ module Validations
+ # == Active Model Absence Validator
+ class AbsenceValidator < EachValidator #:nodoc:
+ def validate(record)
+ record.errors.add_on_present(attributes, options)
+ end
+ end
+
+ module HelperMethods
+ # Validates that the specified attributes are blank (as defined by
+ # Object#blank?). Happens by default on save.
+ #
+ # class Person < ActiveRecord::Base
+ # validates_absence_of :first_name
+ # end
+ #
+ # The first_name attribute must be in the object and it must be blank.
+ #
+ # Configuration options:
+ # * <tt>:message</tt> - A custom error message (default is: "must be blank").
+ #
+ # There is also a list of default options supported by every validator:
+ # +:if+, +:unless+, +:on+ and +:strict+.
+ # See <tt>ActiveModel::Validation#validates</tt> for more information
+ def validates_absence_of(*attr_names)
+ validates_with AbsenceValidator, _merge_attributes(attr_names)
+ end
+ end
+ end
+end