Permalink
Browse files

Document the validates class method. Closes #10216 [Farley Knight]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8345 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 62ddeaf commit 1542886e40e89905d75f53af8fd5ecaf42135d55 @jeremy jeremy committed Dec 10, 2007
Showing with 27 additions and 1 deletion.
  1. +27 −1 activerecord/lib/active_record/validations.rb
@@ -297,7 +297,33 @@ module ClassMethods
:equal_to => '==', :less_than => '<', :less_than_or_equal_to => '<=',
:odd => 'odd?', :even => 'even?' }.freeze
-
+ # Adds a validation method or block to the class. This is useful when
+ # overriding the #validate instance method becomes too unwieldly and
+ # you're looking for more descriptive declaration of your validations.
+ #
+ # This can be done with a symbol pointing to a method:
+ #
+ # class Comment < ActiveRecord::Base
+ # validate :must_be_friends
+ #
+ # def must_be_friends
+ # errors.add_to_base("Must be friends to leave a comment") unless commenter.friend_of?(commentee)
+ # end
+ # end
+ #
+ # Or with a block which is passed the current record to be validated:
+ #
+ # class Comment < ActiveRecord::Base
+ # validate do |comment|
+ # comment.must_be_friends
+ # end
+ #
+ # def must_be_friends
+ # errors.add_to_base("Must be friends to leave a comment") unless commenter.friend_of?(commentee)
+ # end
+ # end
+ #
+ # This usage applies to #validate_on_create and #validate_on_update as well.
def validate(*methods, &block)
methods << block if block_given?
write_inheritable_set(:validate, methods)

0 comments on commit 1542886

Please sign in to comment.