effective_bootstrap 1.22.2 → 1.23.0

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: 72dd156fce6da5b624d7ef6e666198def54c289676f1aaf024aea4c11eae7f8f
4
- data.tar.gz: 3f6518cd35b2a1dd28159dcaad798631572b6fd4607e252d79990c468d693e7c
3
+ metadata.gz: 8525fb430647548ed163f61aacb3d1a5a582cbb6e5bf7182d2c69374cd4e5082
4
+ data.tar.gz: b5ba63ca4c4162696b289599106c8476ac3d1eceb557eff451b707ac4b9aa608
5
5
  SHA512:
6
- metadata.gz: ba618d917a6a0a312b40bd93d86ebd28e9022adf7d1cd530a75e6956de1e2cd72010e2f1631654963f1b8675d7f144c574efbe062ad0ad1d239d8d7839262665
7
- data.tar.gz: 32e42a810c099983bfc764bc3d25d94a9c6dfba62c4966d5eeef84140cb84c3a02bb8a2d4a1f1429d7f6faa585300ccba158437b2d6fa2be1f0fb122c935209d
6
+ metadata.gz: 9763f0b4a0e4a728d9601dcd9872fcd4ff921b7e6f55f31387a6a5be1c5fa2a0b6aac561c9b0d6203d83667455232804acb49342576cb1068e767d6c026ea598
7
+ data.tar.gz: 3dbec9987fc1bfaba4130ad9b4668cd5e1f462d0fd12ee5307d2a7dd4c2d45bf4ea4ee6faa9c21089fffb800428b52b526f6511b780ee3dff8ec4acb8050c9fc
@@ -226,6 +226,7 @@ module Effective
226
226
 
227
227
  obj = (object.class == Class) ? object : object.class
228
228
  return false unless obj.respond_to?(:validators_on)
229
+ return true if required_belongs_to?(obj, name)
229
230
 
230
231
  if name.to_s.ends_with?('_id')
231
232
  return required_presence?(obj, name) || required_presence?(obj, name[0...-3])
@@ -234,6 +235,20 @@ module Effective
234
235
  required_presence?(obj, name)
235
236
  end
236
237
 
238
+ def required_belongs_to?(obj, name)
239
+ return false unless obj.respond_to?(:reflect_on_all_associations)
240
+
241
+ reflection = obj.reflect_on_association(name.to_s.delete_suffix('_id'))
242
+ reflection ||= obj.reflect_on_all_associations(:belongs_to).find do |belongs_to|
243
+ Array(belongs_to.foreign_key).map(&:to_s).include?(name.to_s)
244
+ end
245
+
246
+ return false unless reflection&.macro == :belongs_to
247
+
248
+ optional = reflection.options[:optional]
249
+ optional.nil? ? obj.belongs_to_required_by_default : !optional
250
+ end
251
+
237
252
  def required_presence?(obj, name)
238
253
  obj.validators_on(name).any? do |v|
239
254
  (
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '1.22.2'.freeze
2
+ VERSION = '1.23.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.2
4
+ version: 1.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect