aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/models
diff options
context:
space:
mode:
authorJan Habermann <jan@habermann24.com>2014-04-03 01:52:42 +0200
committerJan Habermann <jan@habermann24.com>2014-04-03 01:52:42 +0200
commit98e69078d5e2fe9a13bd912bbb5da00be4d43497 (patch)
treed4da280a5a00d4ace96a3dab58bc5fbe14b93b5e /activerecord/test/models
parent165d93b22ff5f8798296bd5d7642d0ddb8996c74 (diff)
downloadrails-98e69078d5e2fe9a13bd912bbb5da00be4d43497.tar.gz
rails-98e69078d5e2fe9a13bd912bbb5da00be4d43497.tar.bz2
rails-98e69078d5e2fe9a13bd912bbb5da00be4d43497.zip
Properly handle scoping with has_many :through. Fixes #14537.
Diffstat (limited to 'activerecord/test/models')
-rw-r--r--activerecord/test/models/post.rb4
-rw-r--r--activerecord/test/models/reader.rb2
2 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb
index faf539a562..f52130278c 100644
--- a/activerecord/test/models/post.rb
+++ b/activerecord/test/models/post.rb
@@ -144,6 +144,10 @@ class Post < ActiveRecord::Base
has_many :lazy_readers
has_many :lazy_readers_skimmers_or_not, -> { where(skimmer: [ true, false ]) }, :class_name => 'LazyReader'
+
+ has_many :lazy_people, :through => :lazy_readers, :source => :person
+ has_many :lazy_readers_unscope_skimmers, -> { skimmers_or_not }, :class_name => 'LazyReader'
+ has_many :lazy_people_unscope_skimmers, :through => :lazy_readers_unscope_skimmers, :source => :person
def self.top(limit)
ranked_by_comments.limit_by(limit)
diff --git a/activerecord/test/models/reader.rb b/activerecord/test/models/reader.rb
index 3a6b7fad34..14b5f60a72 100644
--- a/activerecord/test/models/reader.rb
+++ b/activerecord/test/models/reader.rb
@@ -15,6 +15,8 @@ end
class LazyReader < ActiveRecord::Base
self.table_name = "readers"
default_scope -> { where(skimmer: true) }
+
+ scope :skimmers_or_not, -> { unscope(:where => :skimmer) }
belongs_to :post
belongs_to :person