avo 1.18.0.pre.2 → 1.18.2.pre.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of avo might be problematic. Click here for more details.

@@ -2,6 +2,8 @@ module Avo
2
2
  class ApplicationController < ::ActionController::Base
3
3
  include Pundit
4
4
  include Pagy::Backend
5
+ include Avo::ApplicationHelper
6
+
5
7
  protect_from_forgery with: :exception
6
8
  before_action :init_app
7
9
  before_action :check_avo_license
@@ -71,6 +73,8 @@ module Avo
71
73
  def resources_path(model, keep_query_params: false, **args)
72
74
  return if model.nil?
73
75
 
76
+ model_class = get_model_class model
77
+
74
78
  existing_params = {}
75
79
 
76
80
  begin
@@ -78,7 +82,7 @@ module Avo
78
82
  existing_params = Addressable::URI.parse(request.fullpath).query_values.symbolize_keys
79
83
  end
80
84
  rescue; end
81
- avo.send :"resources_#{model.model_name.route_key}_path", **existing_params, **args
85
+ avo.send :"resources_#{model_class.base_class.model_name.route_key}_path", **existing_params, **args
82
86
  end
83
87
 
84
88
  def related_resources_path(parent_model, model, keep_query_params: false, **args)
@@ -283,23 +287,5 @@ module Avo
283
287
  def on_api_path
284
288
  request.original_url.match?(/.*#{Avo::App.root_path}\/avo_api\/.*/)
285
289
  end
286
-
287
- def get_model_class(model)
288
- if model.instance_of?(Class)
289
- model
290
- else
291
- model.class
292
- end
293
- end
294
-
295
- def singular_name(model_or_class)
296
- model_class = get_model_class model_or_class
297
-
298
- if ActiveModel::Naming.uncountable? model_class
299
- model_class.model_name.route_key.singularize.gsub('_index', '')
300
- else
301
- model_class.model_name.route_key.singularize
302
- end
303
- end
304
290
  end
305
291
  end
@@ -21,7 +21,8 @@ module Avo
21
21
  end
22
22
 
23
23
  def destroy
24
- attachment = ActiveStorage::Attachment.find(params[:signed_attachment_id])
24
+ blob = ActiveStorage::Blob.find(params[:signed_attachment_id])
25
+ attachment = blob.attachments.find_by record_id: params[:id], record_type: @model.class.to_s
25
26
 
26
27
  if attachment.present?
27
28
  attachment.destroy
@@ -154,5 +154,23 @@ module Avo
154
154
 
155
155
  classes
156
156
  end
157
+
158
+ def get_model_class(model)
159
+ if model.instance_of?(Class)
160
+ model
161
+ else
162
+ model.class.base_class
163
+ end
164
+ end
165
+
166
+ def singular_name(model_or_class)
167
+ model_class = get_model_class model_or_class
168
+
169
+ if ActiveModel::Naming.uncountable? model_class
170
+ model_class.base_class.model_name.route_key.singularize.gsub('_index', '')
171
+ else
172
+ model_class.base_class.model_name.route_key.singularize
173
+ end
174
+ end
157
175
  end
158
176
  end
data/db/factories.rb CHANGED
@@ -44,4 +44,13 @@ FactoryBot.define do
44
44
  factory :comment do
45
45
  body { Faker::Lorem.paragraphs(number: rand(4...10)).join("\n") }
46
46
  end
47
+
48
+ factory :person do
49
+ name { "#{Faker::Name.first_name} #{Faker::Name.last_name}" }
50
+ end
51
+
52
+ factory :spouse do
53
+ name { "#{Faker::Name.first_name} #{Faker::Name.last_name}" }
54
+ type { "Spouse" }
55
+ end
47
56
  end
@@ -74,7 +74,7 @@ module Avo
74
74
  end
75
75
 
76
76
  def initialize
77
- self.class.model_class = model_class
77
+ self.class.model_class = model_class.base_class
78
78
  end
79
79
 
80
80
  def hydrate(model: nil, view: nil, user: nil, params: nil)
@@ -198,10 +198,13 @@ module Avo
198
198
  end
199
199
 
200
200
  def model_class
201
+ # get the model class off of the static property
201
202
  return self.class.model_class if self.class.model_class.present?
202
203
 
203
- return @model.class if @model.present?
204
+ # get the model class off of the model
205
+ return @model.base_class if @model.present?
204
206
 
207
+ # generate a model class
205
208
  class_name_without_resource.safe_constantize
206
209
  end
207
210
 
@@ -410,5 +413,9 @@ module Avo
410
413
  rescue
411
414
  nil
412
415
  end
416
+
417
+ def form_scope
418
+ model.class.base_class.to_s.downcase
419
+ end
413
420
  end
414
421
  end
data/lib/avo/engine.rb CHANGED
@@ -3,6 +3,11 @@ Gem.loaded_specs["avo"].dependencies.each do |d|
3
3
  require d.name
4
4
  end
5
5
 
6
+ # In development we should load the engine so we get the autoload for components
7
+ if ENV["RAILS_ENV"] === "development"
8
+ require "view_component/engine"
9
+ end
10
+
6
11
  module Avo
7
12
  class Engine < ::Rails::Engine
8
13
  isolate_namespace Avo
@@ -25,8 +25,6 @@ module Avo
25
25
  value.each do |file|
26
26
  # Skip empty values
27
27
  next unless file.present?
28
- # Keep only String values
29
- next unless file.class === String
30
28
 
31
29
  model.send(key).attach file
32
30
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "1.18.0.pre.2"
2
+ VERSION = "1.18.2.pre.0"
3
3
  end