Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
Index: test/paranoid_test.rb =================================================================== --- test/paranoid_test.rb (revision 2932) +++ test/paranoid_test.rb (working copy) @@ -92,7 +92,6 @@ def test_should_not_count_deleted assert_equal 1, Widget.count - assert_equal 1, Widget.count(['title=?', 'widget 1']) assert_equal 2, Widget.calculate_with_deleted(:count, :all) end @@ -142,19 +141,19 @@ end def test_should_not_override_scopes_when_counting - assert_equal 1, Widget.with_scope(:find => { :conditions => "title = 'widget 1'" }) { Widget.count } - assert_equal 0, Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) { Widget.count } - assert_equal 1, Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) { Widget.calculate_with_deleted(:count, :all) } + assert_equal 1, Widget.send(:with_scope, :find => { :conditions => "title = 'widget 1'" }) { Widget.count } + assert_equal 0, Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) { Widget.count } + assert_equal 1, Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) { Widget.calculate_with_deleted(:count, :all) } end def test_should_not_override_scopes_when_finding - assert_equal [1], Widget.with_scope(:find => { :conditions => "title = 'widget 1'" }) { Widget.find(:all) }.ids - assert_equal [], Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) { Widget.find(:all) }.ids - assert_equal [2], Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) { Widget.find_with_deleted(:all) }.ids + assert_equal [1], Widget.send(:with_scope, :find => { :conditions => "title = 'widget 1'" }) { Widget.find(:all) }.ids + assert_equal [], Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) { Widget.find(:all) }.ids + assert_equal [2], Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) { Widget.find_with_deleted(:all) }.ids end def test_should_allow_multiple_scoped_calls_when_finding - Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) do + Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) do assert_equal [2], Widget.find_with_deleted(:all).ids assert_equal [2], Widget.find_with_deleted(:all).ids, "clobbers the constrain on the unmodified find" assert_equal [], Widget.find(:all).ids @@ -163,7 +162,7 @@ end def test_should_allow_multiple_scoped_calls_when_counting - Widget.with_scope(:find => { :conditions => "title = 'deleted widget 2'" }) do + Widget.send(:with_scope, :find => { :conditions => "title = 'deleted widget 2'" }) do assert_equal 1, Widget.calculate_with_deleted(:count, :all) assert_equal 1, Widget.calculate_with_deleted(:count, :all), "clobbers the constrain on the unmodified find" assert_equal 0, Widget.count Index: lib/caboose/acts/paranoid.rb =================================================================== --- lib/caboose/acts/paranoid.rb (revision 2932) +++ lib/caboose/acts/paranoid.rb (working copy) @@ -88,6 +88,19 @@ calculate_with_deleted(:count, *construct_count_options_from_legacy_args(*args)) end + def self.extended(base) #:nodoc: + super + if base.methods.include?("construct_count_options_from_args") + class << base + alias_method :count_with_deleted, :count_with_deleted_without_legacy + end + end + end + + def count_with_deleted_without_legacy(*args) + calculate_with_deleted(:count, *construct_count_options_from_args(*args)) + end + def count(*args) with_deleted_scope { count_with_deleted(*args) } end
This paste will be private.
From the Design Piracy series on my blog: