Skip to content

Commit

Permalink
fix specs bugs, function did not handle records without primary key
Browse files Browse the repository at this point in the history
  • Loading branch information
Nevelito committed Feb 13, 2025
1 parent d84d813 commit 6694428
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions lib/avo/fields/belongs_to_field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -206,27 +206,30 @@ def fill_field(record, key, value, params)

record.send(:"#{polymorphic_as}_type=", valid_model_class)

# If the type is blank, reset the id too.
id_from_param = params["#{polymorphic_as}_id"]

if valid_model_class.blank? || id_from_param.blank?
record.send(:"#{polymorphic_as}_id=", nil)
else
primary_key = reflection.options[:primary_key] || target_resource(record: record, polymorphic_model_class: value.safe_constantize).model_class.primary_key
record_id = target_resource(record: record, polymorphic_model_class: value.safe_constantize).model_class.where(primary_key => id_from_param).pick(primary_key)
resource = target_resource(record:, polymorphic_model_class: value.safe_constantize)
primary_key = reflection.options[:primary_key] || resource.model_class.try(:primary_key) || :id
record_id = resource.model_class.where(primary_key => id_from_param).pick(primary_key)

record.send(:"#{polymorphic_as}_id=", record_id)
end
else
if value.blank?
record_id = nil
else
primary_key = reflection.options[:primary_key] || target_resource(record: record).model_class.primary_key
record_id = target_resource(record: record).model_class.where(primary_key => value).pick(primary_key)
resource = target_resource(record:)
primary_key = reflection.options[:primary_key] || resource.model_class.try(:primary_key) || :id
record_id = resource.model_class.where(primary_key => value).pick(primary_key)
end

record.send(:"#{key}=", record_id)
end

record
end

def valid_polymorphic_class(possible_class)
Expand Down

0 comments on commit 6694428

Please sign in to comment.