lib/avo/fields/belongs_to_field.rb in avo-3.6.1 vs lib/avo/fields/belongs_to_field.rb in avo-3.6.2

- old
+ new

@@ -86,14 +86,14 @@ @can_create = args[:can_create].nil? ? true : args[:can_create] end def value if is_polymorphic? - # Get the value from the pre-filled assoociation record + # Get the value from the pre-filled association record super(polymorphic_as) else - # Get the value from the pre-filled assoociation record + # Get the value from the pre-filled association record super(relation_method) end end # The value @@ -152,13 +152,13 @@ rescue false end def foreign_key - return polymorphic_as if polymorphic_as.present? - - if @record.present? + @foreign_key ||= if polymorphic_as.present? + polymorphic_as + elsif @record.present? get_model_class(@record).reflections[@relation_method].foreign_key elsif @resource.present? && @resource.model_class.reflections[@relation_method].present? @resource.model_class.reflections[@relation_method].foreign_key end end @@ -185,29 +185,29 @@ target_resource.new(record: value)&.record_title end def to_permitted_param if polymorphic_as.present? - return ["#{polymorphic_as}_type".to_sym, "#{polymorphic_as}_id".to_sym] + return [:"#{polymorphic_as}_type", :"#{polymorphic_as}_id"] end foreign_key.to_sym end def fill_field(model, key, value, params) return model unless model.methods.include? key.to_sym if polymorphic_as.present? - valid_model_class = valid_polymorphic_class params["#{polymorphic_as}_type"] + valid_model_class = valid_polymorphic_class params[:"#{polymorphic_as}_type"] - model.send("#{polymorphic_as}_type=", valid_model_class) + model.send(:"#{polymorphic_as}_type=", valid_model_class) # If the type is blank, reset the id too. if valid_model_class.blank? - model.send("#{polymorphic_as}_id=", nil) + model.send(:"#{polymorphic_as}_id=", nil) else - model.send("#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) + model.send(:"#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) end else model.send("#{key}=", value) end @@ -220,35 +220,35 @@ end end def database_id # If the field is a polymorphic value, return the polymorphic_type as key and pre-fill the _id in fill_field. - return "#{polymorphic_as}_type" if polymorphic_as.present? + return :"#{polymorphic_as}_type" if polymorphic_as.present? foreign_key rescue id end def target_resource - return use_resource if use_resource.present? - - if is_polymorphic? + @target_resource ||= if use_resource.present? + use_resource + elsif is_polymorphic? if value.present? - return get_resource_by_model_class(value.class) + get_resource_by_model_class(value.class) else return nil end - end - - reflection_key = polymorphic_as || id - - if @record._reflections[reflection_key.to_s].klass.present? - get_resource_by_model_class(@record._reflections[reflection_key.to_s].klass.to_s) - elsif @record._reflections[reflection_key.to_s].options[:class_name].present? - get_resource_by_model_class(@record._reflections[reflection_key.to_s].options[:class_name]) else - App.get_resource_by_name reflection_key.to_s + reflection_key = polymorphic_as || id + + if @record._reflections[reflection_key.to_s].klass.present? + get_resource_by_model_class(@record._reflections[reflection_key.to_s].klass.to_s) + elsif @record._reflections[reflection_key.to_s].options[:class_name].present? + get_resource_by_model_class(@record._reflections[reflection_key.to_s].options[:class_name]) + else + App.get_resource_by_name reflection_key.to_s + end end end def get_record @record || @resource.record