Permalink
Browse files

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@177 5ecf4fe…

…2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 1f916a1 commit d8a58eea1118fa5ca9339a677b5179ed712f9246 @dhh dhh committed Dec 16, 2004
Showing with 24 additions and 2 deletions.
  1. +2 −2 activerecord/CHANGELOG
  2. +22 −0 activerecord/lib/active_record/timestamp.rb
View
@@ -1,14 +1,14 @@
*CVS*
-* Added acts_as_list that can decorates an existing class with methods like move_higher/lower, move_to_top/bottom. Example:
+* Added acts_as_list that can decorates an existing class with methods like move_higher/lower, move_to_top/bottom. [Tobias Luetke] Example:
class TodoItem < ActiveRecord::Base
acts_as_list :scope => :todo_list_id
belongs_to :todo_list
end
* Added acts_as_tree that can decorates an existing class with a many to many relationship with itself. Perfect for categories in
- categories and the likes.
+ categories and the likes. [Tobias Luetke]
* Added that Active Records will automatically record creation and/or update timestamps of database objects if fields of the names
created_at/created_on or updated_at/updated_on are present. [Tobias Luetke]
@@ -0,0 +1,22 @@
+module ActiveRecord
+ # Active Records will automatically record creation and/or update timestamps of database objects
+ # if fields of the names created_at/created_on or updated_at/updated_on are present.
+ module Timestamp
+ def self.append_features(base) # :nodoc:
+ super
+ base.before_create :timestamp_before_create
+ base.before_update :timestamp_before_update
+ end
+
+ def timestamp_before_create
+ write_attribute("created_at", Time.now) if respond_to?(:created_at) && created_at.nil?
+ write_attribute("created_on", Time.now) if respond_to?(:created_on) && created_on.nil?
+ timestamp_before_update
+ end
+
+ def timestamp_before_update
+ write_attribute("updated_at", Time.now) if respond_to?(:updated_at)
+ write_attribute("updated_on", Time.now) if respond_to?(:updated_on)
+ end
+ end
+end

0 comments on commit d8a58ee

Please sign in to comment.