switchman 3.5.18 → 3.5.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cdaed95d542d3c212685130e78318ab37685b8fbf757fa54bb4948d517c6da6
4
- data.tar.gz: 4326b2c5eccec1fea66ea9f0df42f2442239856330fd663138981dfcae1017ad
3
+ metadata.gz: 88d7a6f4e778e781d7706281f5330b378a7f7982fe7475a95b76693c1549d146
4
+ data.tar.gz: e8ebfc94e5a57a56a5a44f2924d3f273fd5424211ead5def892c19d5fca0ba7b
5
5
  SHA512:
6
- metadata.gz: c03b4ee181f6bf4f0bdd002c00c743c41c94afae189e0e7a18dab7abeb6f79477ea9f330c33f3968f26278fec0e20b42f7364cd05c5192b59ef9095ac9afed32
7
- data.tar.gz: '09244d984c8116ed0d2596b2b4b9791bd0a95ad58d93879e08afbc0df3c470f3c71859c2d03089eea361fc8ea80f10762956891236767d127b1c5b97e8ff7062'
6
+ metadata.gz: 983b75007895318e8e1dda6022f755c923e3b6d390ce9112037eb202be9384caaa7f7fd9e633c1e200f75bbd5a2346f9871cd60aed71f1b7b7b5a04f6aa63906
7
+ data.tar.gz: c91f50e916dc069b75fc8260c1ae52cd64e132e8eb68bb22c182a4291b87bf9a03bea390c8797b50b7b477fc7c82af8670b99e0213e4c5b712e097295912d98c
@@ -291,14 +291,14 @@ module Switchman
291
291
  end
292
292
 
293
293
  module AutosaveAssociation
294
- def association_foreign_key_changed?(reflection, record, key)
295
- return false if reflection.through_reflection?
294
+ if ::Rails.version < "7.1"
295
+ def association_foreign_key_changed?(reflection, record, key)
296
+ return false if reflection.through_reflection?
296
297
 
297
- # have to use send instead of _read_attribute because sharding
298
- record.has_attribute?(reflection.foreign_key) && record.send(reflection.foreign_key) != key
299
- end
298
+ # have to use send instead of _read_attribute because sharding
299
+ record.has_attribute?(reflection.foreign_key) && record.send(reflection.foreign_key) != key
300
+ end
300
301
 
301
- if ::Rails.version < "7.1"
302
302
  def save_belongs_to_association(reflection)
303
303
  # this seems counter-intuitive, but the autosave code will assign to attribute bypassing switchman,
304
304
  # after reading the id attribute _without_ bypassing switchman. So we need Shard.current for the
@@ -306,6 +306,16 @@ module Switchman
306
306
  shard.activate(connection_class_for_self_for_reflection(reflection)) { super }
307
307
  end
308
308
  else
309
+ def association_foreign_key_changed?(reflection, record, key)
310
+ return false if reflection.through_reflection?
311
+
312
+ foreign_key = Array(reflection.foreign_key)
313
+ return false unless foreign_key.all? { |k| record._has_attribute?(k) }
314
+
315
+ # have to use send instead of _read_attribute because sharding
316
+ foreign_key.map { |k| record.send(k) } != Array(key)
317
+ end
318
+
309
319
  def save_belongs_to_association(reflection)
310
320
  association = association_instance_get(reflection.name)
311
321
  return unless association&.loaded? && !association.stale_target?
@@ -277,7 +277,7 @@ module Switchman
277
277
  end
278
278
 
279
279
  reflection = self.class.send(:reflection_for_integer_attribute, attr_name)
280
- super(::Switchman::Shard.relative_id_for(
280
+ super(attr_name, ::Switchman::Shard.relative_id_for(
281
281
  new_value,
282
282
  ::Switchman::Shard.current(connection_class_for_self_for_reflection(reflection)),
283
283
  shard
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Switchman
4
- VERSION = "3.5.18"
4
+ VERSION = "3.5.20"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: switchman
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.18
4
+ version: 3.5.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-01-17 00:00:00.000000000 Z
13
+ date: 2024-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -288,6 +288,7 @@ licenses:
288
288
  - MIT
289
289
  metadata:
290
290
  rubygems_mfa_required: 'true'
291
+ source_code_uri: https://github.com/instructure/switchman
291
292
  post_install_message:
292
293
  rdoc_options: []
293
294
  require_paths: