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