laserlemon-vestal_versions 0.5.0 → 0.6.0

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/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
 
@@ -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: laserlemon-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 -07:00
12
+ date: 2009-09-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency