diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-08-12 21:14:42 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-08-12 21:17:30 -0300 |
commit | dc3230b156a4cfe5a8fbe3636edf0117f8e122cc (patch) | |
tree | 39d6984b72453429a1bd1752bc604fa82dce006d /activerecord/test/models | |
parent | a4f780947299cc35f14c9e1825278155ae88ee44 (diff) | |
download | rails-dc3230b156a4cfe5a8fbe3636edf0117f8e122cc.tar.gz rails-dc3230b156a4cfe5a8fbe3636edf0117f8e122cc.tar.bz2 rails-dc3230b156a4cfe5a8fbe3636edf0117f8e122cc.zip |
Skip statement cache on through association reader
If the through class has default scopes we should skip the statement
cache.
Closes #20745.
Diffstat (limited to 'activerecord/test/models')
-rw-r--r-- | activerecord/test/models/carrier.rb | 2 | ||||
-rw-r--r-- | activerecord/test/models/customer_carrier.rb | 14 | ||||
-rw-r--r-- | activerecord/test/models/member.rb | 3 | ||||
-rw-r--r-- | activerecord/test/models/membership.rb | 15 | ||||
-rw-r--r-- | activerecord/test/models/shop_account.rb | 6 |
5 files changed, 40 insertions, 0 deletions
diff --git a/activerecord/test/models/carrier.rb b/activerecord/test/models/carrier.rb new file mode 100644 index 0000000000..230be118c3 --- /dev/null +++ b/activerecord/test/models/carrier.rb @@ -0,0 +1,2 @@ +class Carrier < ActiveRecord::Base +end diff --git a/activerecord/test/models/customer_carrier.rb b/activerecord/test/models/customer_carrier.rb new file mode 100644 index 0000000000..37186903ff --- /dev/null +++ b/activerecord/test/models/customer_carrier.rb @@ -0,0 +1,14 @@ +class CustomerCarrier < ActiveRecord::Base + cattr_accessor :current_customer + + belongs_to :customer + belongs_to :carrier + + default_scope -> { + if current_customer + where(customer: current_customer) + else + all + end + } +end diff --git a/activerecord/test/models/member.rb b/activerecord/test/models/member.rb index dc0566d8a7..7693c6e515 100644 --- a/activerecord/test/models/member.rb +++ b/activerecord/test/models/member.rb @@ -26,6 +26,9 @@ class Member < ActiveRecord::Base has_many :current_memberships, -> { where :favourite => true } has_many :clubs, :through => :current_memberships + has_many :tenant_memberships + has_many :tenant_clubs, through: :tenant_memberships, class_name: 'Club', source: :club + has_one :club_through_many, :through => :current_memberships, :source => :club belongs_to :admittable, polymorphic: true diff --git a/activerecord/test/models/membership.rb b/activerecord/test/models/membership.rb index df7167ee93..e181ba1f11 100644 --- a/activerecord/test/models/membership.rb +++ b/activerecord/test/models/membership.rb @@ -18,3 +18,18 @@ class SelectedMembership < Membership select("'1' as foo") end end + +class TenantMembership < Membership + cattr_accessor :current_member + + belongs_to :member + belongs_to :club + + default_scope -> { + if current_member + where(member: current_member) + else + all + end + } +end diff --git a/activerecord/test/models/shop_account.rb b/activerecord/test/models/shop_account.rb new file mode 100644 index 0000000000..1580e8b20c --- /dev/null +++ b/activerecord/test/models/shop_account.rb @@ -0,0 +1,6 @@ +class ShopAccount < ActiveRecord::Base + belongs_to :customer + belongs_to :customer_carrier + + has_one :carrier, through: :customer_carrier +end |