aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAsa Calow <mothership@asacalow.co.uk>2008-05-29 21:10:53 +0100
committerAsa Calow <mothership@asacalow.co.uk>2008-05-29 21:10:53 +0100
commitc81a78dd6d659c32640c6b54284f5bec1f1beb10 (patch)
tree775b60e638729658a1d0cf93e9100a3c6444d424
parentfcbf2f79e11b3c403fa38de5a100baf1b8fc6c2d (diff)
Modified acts_as_versioned to work with ActiveRecord's dirty attribute checking.
-rw-r--r--lib/acts_as_versioned.rb2
-rw-r--r--test/versioned_test.rb19
2 files changed, 9 insertions, 12 deletions
diff --git a/lib/acts_as_versioned.rb b/lib/acts_as_versioned.rb
index 4be13aac3..baf7d9e74 100644
--- a/lib/acts_as_versioned.rb
+++ b/lib/acts_as_versioned.rb
@@ -355,7 +355,7 @@ module ActiveRecord #:nodoc:
end
def altered?
- self.track_altered_attributes ? (self.version_if_changed.map(&:to_s) - changed).length > 0 : changed?
+ self.track_altered_attributes ? (self.version_if_changed.map(&:to_s) - self.changed).length == 0 : changed?
end
# Clones a model. Used when saving a new version or reverting a model's version.
diff --git a/test/versioned_test.rb b/test/versioned_test.rb
index a7bc2082b..554e06a62 100644
--- a/test/versioned_test.rb
+++ b/test/versioned_test.rb
@@ -184,10 +184,11 @@ class VersionedTest < Test::Unit::TestCase
def test_version_no_limit
p = Page.create! :title => "title", :body => 'first body'
- p.save
- p.save
5.times do |i|
- assert_page_title p, i
+ p.title = "title#{i}"
+ p.save
+ assert_equal "title#{i}", p.title
+ assert_equal i+2, p.version
end
end
@@ -196,7 +197,10 @@ class VersionedTest < Test::Unit::TestCase
p.update_attributes(:title => "title1")
p.update_attributes(:title => "title2")
5.times do |i|
- assert_page_title p, i, :lock_version
+ p.title = "title#{i}"
+ p.save
+ assert_equal "title#{i}", p.title
+ assert_equal (i+4), p.send(:lock_version)
assert p.versions(true).size <= 2, "locked version can only store 2 versions"
end
end
@@ -236,13 +240,6 @@ class VersionedTest < Test::Unit::TestCase
assert_equal 2, p.versions(true).size # version 1 deleted
end
- def assert_page_title(p, i, version_field = :version)
- p.title = "title#{i}"
- p.save
- assert_equal "title#{i}", p.title
- assert_equal (i+4), p.send(version_field)
- end
-
def test_find_versions
assert_equal 2, locked_pages(:welcome).versions.size
assert_equal 1, locked_pages(:welcome).versions.find(:all, :conditions => ['title LIKE ?', '%weblog%']).length