acts_as_tenant 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a241e056fc0e64709f94c3b8df2d91d192fa904a990bff28e951fceec7071351
4
- data.tar.gz: d57c2ebb29e624ccacaa4b031214539a2a28363da65a653a9a75172e9f3a29dd
3
+ metadata.gz: e172e79670c2137d3641f2062a07e351ad5291db58ffabad5cd15e8e52850583
4
+ data.tar.gz: 3445b7da7ef300fbecaa402e351c139f4c994e0ef5c990700ac57d69a9c02c1a
5
5
  SHA512:
6
- metadata.gz: ed5452f120dc6beaafee9952a3850d0378a212a081eecc5783115733e045e3e7658827bc0992e9e97101990751e3cfae5940379cee24d7a272e123ecfa4d51d6
7
- data.tar.gz: b4890ebc99294ece2e1e487c088800c7c5374baeee4d67a0e538e71051079589455562452bb1cf62d6f9d910777b29fbc4beab5f93da52250a8817577fbaa090
6
+ metadata.gz: bf02fcd6565346a41cbdb033952b25c48d79029a496239e2e785386527f0be23acbbe21983b0bc23b39f79c31752857b6eaa2f68bd9a0014f2313e7c8ff7573d
7
+ data.tar.gz: 9d1b38f89c0a0c26733effc2331d6d9adef3a523dd4333204c8c8234d4c92d363e4d923fcc7b854c517a04946362362a30760639ccbf63dbf65513b10c4ef998
@@ -118,14 +118,30 @@ module ActsAsTenant
118
118
 
119
119
  associations.each do |a|
120
120
  attr = a.foreign_key.to_sym
121
- next unless record.will_save_change_to_attribute?(attr)
122
- next if a.name == tenant.to_sym || polymorphic_foreign_keys.include?(a.foreign_key)
121
+ next if a.name == tenant.to_sym
122
+
123
+ if a.polymorphic?
124
+ next unless record.will_save_change_to_attribute?(attr) || record.will_save_change_to_attribute?(a.foreign_type)
125
+ else
126
+ # Associations sharing a polymorphic foreign key are checked through the polymorphic association
127
+ next if polymorphic_foreign_keys.include?(a.foreign_key)
128
+ next unless record.will_save_change_to_attribute?(attr)
129
+ end
123
130
 
124
131
  value = record.read_attribute_for_validation(attr)
125
132
  next if value.nil?
126
133
 
127
- relation = a.scope ? a.scope_for(a.klass.all, record) : a.klass
128
- associated = relation.find_by(a.association_primary_key => value)
134
+ klass = if a.polymorphic?
135
+ type = record.read_attribute(a.foreign_type)&.safe_constantize
136
+ type if type.is_a?(Class) && type < ActiveRecord::Base
137
+ else
138
+ a.klass
139
+ end
140
+
141
+ associated = if klass
142
+ relation = a.scope ? a.scope_for(klass.all, record) : klass
143
+ relation.find_by(a.association_primary_key(klass) => value)
144
+ end
129
145
 
130
146
  if associated.nil? || tenant_mismatch.call(record, associated)
131
147
  record.errors.add attr, "association is invalid [ActsAsTenant]"
@@ -1,3 +1,3 @@
1
1
  module ActsAsTenant
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_tenant
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erwin Matthijssen
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  requirements: []
71
- rubygems_version: 4.0.20
71
+ rubygems_version: 4.0.21
72
72
  specification_version: 4
73
73
  summary: Add multi-tenancy to Rails applications using a shared db strategy
74
74
  test_files: []