diff --git a/activerecord/test/cases/method_scoping_test.rb b/activerecord/test/cases/method_scoping_test.rb index 1081aa4..bf93a3a 100644 --- a/activerecord/test/cases/method_scoping_test.rb +++ b/activerecord/test/cases/method_scoping_test.rb @@ -5,9 +5,10 @@ require 'models/developer' require 'models/project' require 'models/comment' require 'models/category' +require 'models/owner' class MethodScopingTest < ActiveRecord::TestCase - fixtures :authors, :developers, :projects, :comments, :posts, :developers_projects + fixtures :authors, :developers, :projects, :comments, :posts, :developers_projects, :owners def test_set_conditions Developer.send(:with_scope, :find => { :conditions => 'just a test...' }) do @@ -663,6 +664,11 @@ class DefaultScopingTest < ActiveRecord::TestCase assert_equal 2, posts.count assert_equal posts(:thinking), posts.first end + + def test_overwriting_default_scope_with_conditions + owners = UnhappyOwner.happy + assert_equal 1, owners.count + end end =begin diff --git a/activerecord/test/fixtures/owners.yml b/activerecord/test/fixtures/owners.yml index d5493a8..1c21bde 100644 --- a/activerecord/test/fixtures/owners.yml +++ b/activerecord/test/fixtures/owners.yml @@ -5,3 +5,8 @@ blackbeard: ashley: owner_id: 2 name: ashley + +happy_man: + owner_id: 3 + name: john + happy_at: <%= 10.minutes.ago %> diff --git a/activerecord/test/models/owner.rb b/activerecord/test/models/owner.rb index 5760b99..d9e34c6 100644 --- a/activerecord/test/models/owner.rb +++ b/activerecord/test/models/owner.rb @@ -3,3 +3,15 @@ class Owner < ActiveRecord::Base has_many :pets has_many :toys, :through => :pets end + +class UnhappyOwner < ActiveRecord::Base + self.table_name = "owners" + + default_scope where(:happy_at => nil) + + def self.happy + with_exclusive_scope :find => where('owners.happy_at IS NOT NULL') do + self + end + end +end