track_history 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/track_history.rb +7 -6
- data/lib/track_history/version.rb +1 -1
- metadata +5 -5
data/lib/track_history.rb
CHANGED
|
@@ -19,9 +19,10 @@ module TrackHistory
|
|
|
19
19
|
# Takes a hash of options, which can only be :model_name to force a different model name
|
|
20
20
|
# Default model name is ModelHistory
|
|
21
21
|
def track_history(options = {})
|
|
22
|
+
options.assert_valid_keys(:model_name, :table_name)
|
|
22
23
|
@historical_fields = []
|
|
23
24
|
@historical_tracks = {}
|
|
24
|
-
define_historical_model(self, options[:model_name])
|
|
25
|
+
define_historical_model(self, options[:model_name], options[:table_name])
|
|
25
26
|
yield if block_given?
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -43,13 +44,13 @@ module TrackHistory
|
|
|
43
44
|
|
|
44
45
|
private
|
|
45
46
|
|
|
46
|
-
def define_historical_model(base,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
klass = Object.const_set(class_name, Class.new(ActiveRecord::Base))
|
|
47
|
+
def define_historical_model(base, model_name, table_name)
|
|
48
|
+
model_name ||= "#{base.name}History"
|
|
49
|
+
klass = Object.const_set(model_name, Class.new(ActiveRecord::Base))
|
|
50
50
|
@klass_reference = klass
|
|
51
51
|
|
|
52
52
|
# infer fields
|
|
53
|
+
klass.send(:table_name=, table_name) unless table_name.nil?
|
|
53
54
|
klass.columns_hash.each_key do |k|
|
|
54
55
|
matches = k.match(/(.+?)_before$/)
|
|
55
56
|
if matches && matches.size == 2 && field_name = matches[1]
|
|
@@ -65,7 +66,7 @@ module TrackHistory
|
|
|
65
66
|
|
|
66
67
|
# tell the other class about us
|
|
67
68
|
# purposely don't define these until after getting historical_fields
|
|
68
|
-
has_many :histories, :class_name =>
|
|
69
|
+
has_many :histories, :class_name => model_name, :order => 'created_at desc', :dependent => :destroy
|
|
69
70
|
before_update :record_historical_changes
|
|
70
71
|
|
|
71
72
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: track_history
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 25
|
|
5
|
+
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 0.0.
|
|
9
|
+
- 3
|
|
10
|
+
version: 0.0.3
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- John Crepezzi
|
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
73
73
|
requirements: []
|
|
74
74
|
|
|
75
75
|
rubyforge_project: historical
|
|
76
|
-
rubygems_version: 1.
|
|
76
|
+
rubygems_version: 1.3.7
|
|
77
77
|
signing_key:
|
|
78
78
|
specification_version: 3
|
|
79
79
|
summary: Smart model auditing
|