vestal_versions 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -8,7 +8,7 @@ module LaserLemon
8
8
 
9
9
  module ClassMethods
10
10
  def versioned
11
- has_many :versions, :as => :versioned, :order => 'versions.number ASC', :dependent => :destroy do
11
+ has_many :versions, :as => :versioned, :order => 'versions.number ASC', :dependent => :delete_all do
12
12
  def between(from_value, to_value)
13
13
  from, to = number_at(from_value), number_at(to_value)
14
14
  return [] if from.nil? || to.nil?
@@ -37,7 +37,9 @@ module LaserLemon
37
37
  end
38
38
  end
39
39
 
40
- after_save :create_version, :if => :needs_version?
40
+ after_create :create_initial_version
41
+ after_update :create_initial_version, :if => :needs_initial_version?
42
+ after_update :create_version, :if => :needs_version?
41
43
 
42
44
  include InstanceMethods
43
45
  alias_method_chain :reload, :versions
@@ -46,6 +48,10 @@ module LaserLemon
46
48
 
47
49
  module InstanceMethods
48
50
  private
51
+ def needs_initial_version?
52
+ versions.empty?
53
+ end
54
+
49
55
  def needs_version?
50
56
  !changed.empty?
51
57
  end
@@ -55,13 +61,12 @@ module LaserLemon
55
61
  @version = new_version
56
62
  end
57
63
 
58
- def create_version
59
- if versions.empty?
60
- versions.create(:changes => attributes, :number => 1)
61
- else
62
- versions.create(:changes => changes, :number => (last_version + 1))
63
- end
64
+ def create_initial_version
65
+ versions.create(:changes => nil, :number => 1)
66
+ end
64
67
 
68
+ def create_version
69
+ versions.create(:changes => changes, :number => (last_version + 1))
65
70
  reset_version
66
71
  end
67
72
 
data/test/changes_test.rb CHANGED
@@ -6,8 +6,8 @@ class ChangesTest < Test::Unit::TestCase
6
6
  @user = User.create(:name => 'Steve Richert')
7
7
  end
8
8
 
9
- should "initially equal its parent's attributes" do
10
- assert_equal @user.attributes, @user.versions.first.changes
9
+ should "initially be blank" do
10
+ assert @user.versions.first.changes.blank?
11
11
  end
12
12
 
13
13
  should 'contain all changed attributes' do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{vestal_versions}
8
- s.version = "0.5.0"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["laserlemon"]
12
- s.date = %q{2009-09-03}
12
+ s.date = %q{2009-09-05}
13
13
  s.description = %q{Keep a DRY history of your ActiveRecord models' changes}
14
14
  s.email = %q{steve@laserlemon.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vestal_versions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - laserlemon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-03 00:00:00 -04:00
12
+ date: 2009-09-05 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency