Added ActiveRecord::Mixins::Touch that will record creation and update times of objects [xal]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@85 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1cf7eb1ca8
commit
7359bccece
@ -1,5 +1,19 @@
|
||||
*CVS*
|
||||
|
||||
* Added ActiveRecord::Mixins::Touch that will record creation and update times of objects [xal]. Example:
|
||||
|
||||
class Bill < ActiveRecord::Base
|
||||
include ActiveRecord::Mixins::Touch
|
||||
end
|
||||
|
||||
bill = Bill.create("amount" => 100)
|
||||
bill.created_at # => Time.now at the moment of Bill.create
|
||||
bill.updated_at # => Time.now at the moment of Bill.create
|
||||
|
||||
bill.update_attribute("amount", 150)
|
||||
bill.created_at # => Time.now at the moment of Bill.create
|
||||
bill.updated_at # => Time.now at the moment of bill.update_attribute
|
||||
|
||||
* Added ActiveRecord::Mixins::List that can decorates an existing class with methods like move_higher/lower, move_to_top/bottom. Example:
|
||||
|
||||
class TodoItem < ActiveRecord::Base
|
||||
|
35
activerecord/lib/active_record/mixins/touch.rb
Normal file
35
activerecord/lib/active_record/mixins/touch.rb
Normal file
@ -0,0 +1,35 @@
|
||||
module ActiveRecord
|
||||
module Mixins
|
||||
# Including this mixins will record when objects of the class are created in a datetime column called "created_at"
|
||||
# and when its updated in another datetime column called "updated_at".
|
||||
#
|
||||
# class Bill < ActiveRecord::Base
|
||||
# include ActiveRecord::Mixins::Touch
|
||||
# end
|
||||
#
|
||||
# bill = Bill.create("amount" => 100)
|
||||
# bill.created_at # => Time.now at the moment of Bill.create
|
||||
# bill.updated_at # => Time.now at the moment of Bill.create
|
||||
#
|
||||
# bill.update_attribute("amount", 150)
|
||||
# bill.created_at # => Time.now at the moment of Bill.create
|
||||
# bill.updated_at # => Time.now at the moment of bill.update_attribute
|
||||
module Touch
|
||||
def self.append_features(base)
|
||||
super
|
||||
base.class_eval do
|
||||
before_create :touch_on_create
|
||||
before_update :touch_on_update
|
||||
|
||||
def touch_on_create
|
||||
self.created_at = self.updated_at = Time.now
|
||||
end
|
||||
|
||||
def touch_on_update
|
||||
self.updated_at = Time.now
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user