dirty_after_save 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/dirty_after_save.rb +23 -0
  2. metadata +67 -0
@@ -0,0 +1,23 @@
1
+ module DirtyAfterSave
2
+ DIRTY_AFTER_SAVE_SUFFIXES = ['_changed_before_save?', '_change_before_save']
3
+
4
+ def self.included(base)
5
+ base.class_eval do
6
+ attr_accessor :changed_attributes_before_save
7
+ before_save { |build| build.changed_attributes_before_save = build.changes }
8
+
9
+ attribute_method_suffix *DIRTY_AFTER_SAVE_SUFFIXES
10
+ end
11
+ end
12
+
13
+ private
14
+ def attribute_changed_before_save?(attr)
15
+ changed_attributes_before_save.include?(attr)
16
+ end
17
+
18
+ def attribute_change_before_save(attr)
19
+ [changed_attributes_before_save[attr], __send__(attr)] if attribute_changed_before_save?(attr)
20
+ end
21
+ end
22
+
23
+ ActiveRecord::Base.send :include, DirtyAfterSave
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dirty_after_save
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Thomas Kadauke
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-10 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description:
23
+ email: tkadauke@imedo.de
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/dirty_after_save.rb
32
+ has_rdoc: true
33
+ homepage: http://www.imedo.de
34
+ licenses: []
35
+
36
+ post_install_message:
37
+ rdoc_options: []
38
+
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.3.7
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: Track changes even after saving an ActiveRecord model
66
+ test_files: []
67
+