Permalink
Browse files

Add CHANGELOG entry and update the guide

  • Loading branch information...
1 parent 60c65ca commit f31ea4df3ac760ab7ff18ea439e9a9ce9b8c625a John Foley committed Sep 23, 2012
Showing with 23 additions and 0 deletions.
  1. +4 −0 activerecord/CHANGELOG.md
  2. +19 −0 guides/source/active_record_validations_callbacks.md
@@ -1,5 +1,9 @@
## Rails 4.0.0 (unreleased) ##
+* Allow before and after validations to take an array of lifecycle events
+
+ *John Foley*
+
* Support for specifying transaction isolation level
If your database supports setting the isolation level for a transaction, you can set
@@ -995,6 +995,25 @@ class User < ActiveRecord::Base
end
```
+Callbacks can also be registered to only fire on certain lifecycle events:
+<ruby>
+class User < ActiveRecord::Base
+ before_validation :normalize_name, :on => :create
+
+ # :on takes an array as well
+ after_validation :set_location, :on => [ :create, :update ]
+
+ protected
+ def normalize_name
+ self.name = self.name.downcase.titleize
+ end
+
+ def set_location
+ self.location = LocationService.query(self)
+ end
+end
+</ruby>
+
It is considered good practice to declare callback methods as protected or private. If left public, they can be called from outside of the model and violate the principle of object encapsulation.
Available Callbacks

0 comments on commit f31ea4d

Please sign in to comment.