lib/fast_timestamp.rb in fast_timestamp-0.0.1 vs lib/fast_timestamp.rb in fast_timestamp-0.0.2
- old
+ new
@@ -3,17 +3,30 @@
def self.included(base)
base.class_eval { after_destroy :fast_destroy_timestamps }
end
def timestamp!(key)
+ raise "Can't timestamp new records" if new_record?
transaction do
t = ::Timestamp.find_or_create_by_timestampable_type_and_timestampable_id_and_key(self.class.base_class.name, id, key.to_s)
t.update_attribute :stamped_at, Time.zone.now
end
end
+
+ def untimestamp!(key)
+ if t = ::Timestamp.find_by_timestampable_type_and_timestampable_id_and_key(self.class.base_class.name, id, key.to_s)
+ t.destroy
+ end
+ end
def timestamped?(key)
- ::Timestamp.find_by_timestampable_type_and_timestampable_id_and_key(self.class.base_class.name, id, key.to_s).present?
+ raise "Can't check timestamps on new record" if new_record?
+ ::Timestamp.exists? :timestampable_type => self.class.base_class.name, :timestampable_id => id, :key => key.to_s
+ end
+
+ # returns a Time object
+ def timestamp_for(key)
+ ::Timestamp.find_by_timestampable_type_and_timestampable_id_and_key(self.class.base_class.name, id, key.to_s).read_attribute :stamped_at
end
def fast_destroy_timestamps
::Timestamp.destroy_all :timestampable_type => self.class.base_class.name, :timestampable_id => id
true