avo 2.51.0 → 2.53.0

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: 47e343f6db0d2739fc03fcf0969f1f4a315d3d79502ce7c8179ff3e373820ce9
4
- data.tar.gz: 58fd4554a1f1bc28a3ead98ce1ee0350a2665b8778835a9dda7747bb855e814c
3
+ metadata.gz: b7c443e49863a73766cc92d676614d0bfe854f53fa9f72d1ee4913bb736753e0
4
+ data.tar.gz: 76c3b161d5c0d26665ac35dadc6d0429f4f075cb519eadd280427e8ad78608d3
5
5
  SHA512:
6
- metadata.gz: 343a36a7b481bf9c42729b849e9aafd2409809ce7ae740f670d491aa5409b40d39a6523babf73e0ef4cb843d027eecb8c6ba438752545c9e7b78d8823cd540a3
7
- data.tar.gz: f7f1df73690020c4584b375754b08381e4174b39a911c8daf02980df2d1f8c679106e6f350404c6a56bf7ea82c63200c9ddf3b3147454e1246d3ceccad6708b0
6
+ metadata.gz: 309e09c4271214c5bbcbdfd10a9f90617825c19ca93accb7c52db17e38fcce0e5761572f824aee98c5a7059e5e4be575776002df7592c5bd2cd833fc387b5157
7
+ data.tar.gz: 2d905a0da113e8e010fe639d258864a91b1ced97755d5a3ce03448c3921e943235ef3cc56aca88ffcb2396147868e10256dbec3124c7e574e1484c44699ddeb6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (2.51.0)
4
+ avo (2.53.0)
5
5
  actionview (>= 6.0)
6
6
  active_link_to
7
7
  activerecord (>= 6.0)
@@ -41,7 +41,7 @@ class Avo::Fields::BelongsToField::AutocompleteComponent < ViewComponent::Base
41
41
  end
42
42
 
43
43
  def reflection_class
44
- has_polymorphic_association? ? polymorphic_class : @resource.model_class._reflections[@field.id.to_s].klass
44
+ has_polymorphic_association? ? polymorphic_class : @resource.model_class.reflect_on_association(@field.id).klass
45
45
  end
46
46
 
47
47
  private
@@ -36,7 +36,7 @@ class Avo::Fields::HasOneField::ShowComponent < Avo::Fields::ShowComponent
36
36
  end
37
37
 
38
38
  def create_path
39
- association_id = @field.resource.model_class._reflections[@field.id.to_s].inverse_of.name
39
+ association_id = @field.resource.model_class.reflect_on_association(@field.id).inverse_of.name
40
40
 
41
41
  args = {
42
42
  via_relation: association_id,
@@ -77,7 +77,11 @@ class Avo::Index::ResourceControlsComponent < Avo::ResourceComponent
77
77
  end
78
78
 
79
79
  def is_has_many_association?
80
- @reflection.is_a?(::ActiveRecord::Reflection::HasManyReflection) || @reflection.is_a?(::ActiveRecord::Reflection::ThroughReflection)
80
+ @reflection.class.in? [
81
+ ActiveRecord::Reflection::HasManyReflection,
82
+ ActiveRecord::Reflection::HasAndBelongsToManyReflection,
83
+ ActiveRecord::Reflection::ThroughReflection
84
+ ]
81
85
  end
82
86
 
83
87
  def referrer_path
@@ -62,10 +62,20 @@ class Avo::Views::ResourceIndexComponent < Avo::ResourceComponent
62
62
  end
63
63
 
64
64
  def can_attach?
65
- klass = @reflection
66
- klass = @reflection.through_reflection if klass.is_a? ::ActiveRecord::Reflection::ThroughReflection
65
+ return false if has_reflection_and_is_read_only
67
66
 
68
- @reflection.present? && klass.is_a?(::ActiveRecord::Reflection::HasManyReflection) && !has_reflection_and_is_read_only && authorize_association_for(:attach)
67
+ reflection_class = if @reflection.is_a?(::ActiveRecord::Reflection::ThroughReflection)
68
+ @reflection.through_reflection.class
69
+ else
70
+ @reflection.class
71
+ end
72
+
73
+ return false unless reflection_class.in? [
74
+ ActiveRecord::Reflection::HasManyReflection,
75
+ ActiveRecord::Reflection::HasAndBelongsToManyReflection
76
+ ]
77
+
78
+ authorize_association_for(:attach)
69
79
  end
70
80
 
71
81
  def create_path
@@ -226,7 +226,7 @@ module Avo
226
226
 
227
227
  return field.use_resource if field&.use_resource.present?
228
228
 
229
- reflection = @model._reflections[params[:related_name]]
229
+ reflection = @model.class.reflect_on_association(params[:related_name])
230
230
 
231
231
  reflected_model = reflection.klass
232
232
 
@@ -62,7 +62,7 @@ module Avo
62
62
  def create
63
63
  association_name = BaseResource.valid_association_name(@model, params[:related_name])
64
64
 
65
- if reflection_class == "HasManyReflection"
65
+ if has_many_reflection?
66
66
  @model.send(association_name) << @attachment_model
67
67
  else
68
68
  @model.send("#{association_name}=", @attachment_model)
@@ -80,7 +80,7 @@ module Avo
80
80
  def destroy
81
81
  association_name = BaseResource.valid_association_name(@model, params[:related_name])
82
82
 
83
- if reflection_class == "HasManyReflection"
83
+ if has_many_reflection?
84
84
  @model.send(association_name).delete @attachment_model
85
85
  else
86
86
  @model.send("#{association_name}=", nil)
@@ -101,7 +101,7 @@ module Avo
101
101
  private
102
102
 
103
103
  def set_reflection
104
- @reflection = @model._reflections[params[:related_name].to_s]
104
+ @reflection = @model.class.reflect_on_association(params[:related_name])
105
105
  end
106
106
 
107
107
  def set_attachment_class
@@ -127,12 +127,11 @@ module Avo
127
127
  end
128
128
 
129
129
  def reflection_class
130
- reflection = @model._reflections[params[:related_name]]
131
-
132
- klass = reflection.class.name.demodulize.to_s
133
- klass = reflection.through_reflection.class.name.demodulize.to_s if klass == "ThroughReflection"
134
-
135
- klass
130
+ if @reflection.is_a?(ActiveRecord::Reflection::ThroughReflection)
131
+ @reflection.through_reflection.class
132
+ else
133
+ @reflection.class
134
+ end
136
135
  end
137
136
 
138
137
  def authorize_if_defined(method)
@@ -155,8 +154,6 @@ module Avo
155
154
  authorize_if_defined "detach_#{@field.id}?"
156
155
  end
157
156
 
158
- private
159
-
160
157
  def set_related_authorization
161
158
  @related_authorization = if related_resource
162
159
  related_resource.authorization(user: _current_user)
@@ -164,5 +161,12 @@ module Avo
164
161
  Services::AuthorizationService.new _current_user
165
162
  end
166
163
  end
164
+
165
+ def has_many_reflection?
166
+ reflection_class.in? [
167
+ ActiveRecord::Reflection::HasManyReflection,
168
+ ActiveRecord::Reflection::HasAndBelongsToManyReflection
169
+ ]
170
+ end
167
171
  end
168
172
  end
@@ -134,7 +134,7 @@ module Avo
134
134
 
135
135
  # This means that the record has been created through another parent record and we need to attach it somehow.
136
136
  if params[:via_resource_id].present? && params[:via_belongs_to_resource_class].nil?
137
- @reflection = @model._reflections[params[:via_relation]]
137
+ @reflection = @model.class.reflect_on_association(params[:via_relation])
138
138
  # Figure out what kind of association does the record have with the parent record
139
139
 
140
140
  # Fills in the required infor for belongs_to and has_many
@@ -148,7 +148,7 @@ module Avo
148
148
  end
149
149
 
150
150
  # For when working with has_one, has_one_through, has_many_through, has_and_belongs_to_many, polymorphic
151
- if @reflection.is_a? ActiveRecord::Reflection::ThroughReflection
151
+ if @reflection.is_a?(ActiveRecord::Reflection::ThroughReflection) || @reflection.is_a?(ActiveRecord::Reflection::HasAndBelongsToManyReflection)
152
152
  # find the record
153
153
  via_resource = ::Avo::App.get_resource_by_model_name(params[:via_relation_class]).dup
154
154
  @related_record = via_resource.find_record params[:via_resource_id], params: params
@@ -114,7 +114,7 @@ module Avo
114
114
  end
115
115
 
116
116
  def get_record_associations(record)
117
- record._reflections
117
+ record.class.reflections
118
118
  end
119
119
 
120
120
  def valid_association_name(record, association_name)
@@ -382,7 +382,7 @@ module Avo
382
382
 
383
383
  if field.type == "belongs_to"
384
384
 
385
- reflection = @model._reflections[@params[:via_relation]]
385
+ reflection = @model.class.reflections[@params[:via_relation]]
386
386
 
387
387
  if field.polymorphic_as.present? && field.types.map(&:to_s).include?(@params[:via_relation_class])
388
388
  # set the value to the actual record
@@ -245,10 +245,10 @@ module Avo
245
245
 
246
246
  reflection_key = polymorphic_as || id
247
247
 
248
- if @model._reflections[reflection_key.to_s].klass.present?
249
- App.get_resource_by_model_name @model._reflections[reflection_key.to_s].klass.to_s
250
- elsif @model._reflections[reflection_key.to_s].options[:class_name].present?
251
- App.get_resource_by_model_name @model._reflections[reflection_key.to_s].options[:class_name]
248
+ if @model.class.reflect_on_association(reflection_key).klass.present?
249
+ App.get_resource_by_model_name @model.class.reflect_on_association(reflection_key).klass.to_s
250
+ elsif @model.class.reflect_on_association(reflection_key).options[:class_name].present?
251
+ App.get_resource_by_model_name @model.class.reflect_on_association(reflection_key).options[:class_name]
252
252
  else
253
253
  App.get_resource_by_name reflection_key.to_s
254
254
  end
@@ -59,10 +59,10 @@ module Avo
59
59
  end
60
60
 
61
61
  def target_resource
62
- if @model._reflections[id.to_s].klass.present?
63
- Avo::App.get_resource_by_model_name @model._reflections[id.to_s].klass.to_s
64
- elsif @model._reflections[id.to_s].options[:class_name].present?
65
- Avo::App.get_resource_by_model_name @model._reflections[id.to_s].options[:class_name]
62
+ if @model.class.reflect_on_association(id).klass.present?
63
+ Avo::App.get_resource_by_model_name @model.class.reflect_on_association(id).klass.to_s
64
+ elsif @model.class.reflect_on_association(id).options[:class_name].present?
65
+ Avo::App.get_resource_by_model_name @model.class.reflect_on_association(id).options[:class_name]
66
66
  else
67
67
  Avo::App.get_resource_by_name id.to_s
68
68
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "2.51.0" unless const_defined?(:VERSION)
2
+ VERSION = "2.53.0" unless const_defined?(:VERSION)
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.51.0
4
+ version: 2.53.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-05-09 00:00:00.000000000 Z
13
+ date: 2024-09-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord