From b973d6c9b491273b0ab726e72acf445ce41090d4 Mon Sep 17 00:00:00 2001 From: Adrian Marin Date: Thu, 17 Dec 2020 21:17:41 +0200 Subject: [PATCH] fix: belongs_to broken for some model names (#203) * fix: belongs_to broken for some model names * refactor: use the klass first if available --- lib/avo/app/fields/belongs_to.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/avo/app/fields/belongs_to.rb b/lib/avo/app/fields/belongs_to.rb index e7b07a2b59..d89c4e12c8 100644 --- a/lib/avo/app/fields/belongs_to.rb +++ b/lib/avo/app/fields/belongs_to.rb @@ -22,7 +22,8 @@ def hydrate_field(fields, model, resource, view) fields[:searchable] = @searchable fields[:is_relation] = true fields[:database_id] = foreign_key model - target_resource = App.get_resources.find { |r| r.class == "Avo::Resources::#{name}".safe_constantize } + + target_resource = get_target_resource model relation_model = model.public_send(@relation_method) @@ -61,6 +62,16 @@ def foreign_key(model) model.class.reflections[@relation_method].foreign_key end end + + def get_target_resource(model) + if model._reflections[id.to_s].klass.present? + App.get_resource_by_model_name model._reflections[id.to_s].klass.to_s + elsif model._reflections[id.to_s].options[:class_name].present? + App.get_resource_by_model_name model._reflections[id.to_s].options[:class_name] + else + App.get_resource_by_name class_name.to_s + end + end end end end