File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -63,7 +63,11 @@ def foreign_key?
6363 # @since 3.0.0
6464 def evolve ( object )
6565 if object_id_field? || object . is_a? ( Document )
66- object . __evolve_object_id__
66+ if metadata . polymorphic? && constraint
67+ constraint . convert ( object )
68+ else
69+ object . __evolve_object_id__
70+ end
6771 else
6872 related_id_field . evolve ( object )
6973 end
Original file line number Diff line number Diff line change 444444 end
445445 end
446446 end
447+
448+ context "when the metadata is polymoprhic" do
449+
450+ let ( :metadata ) do
451+ Agent . reflect_on_association ( :names )
452+ end
453+
454+ let ( :field ) do
455+ described_class . new ( :nameable_id , type : Object , metadata : metadata )
456+ end
457+
458+ let ( :value ) do
459+ BSON ::ObjectId . new ( ) . to_s
460+ end
461+
462+ let ( :evolved ) do
463+ field . evolve ( value )
464+ end
465+
466+ it "does not change the foreign key" do
467+ expect ( evolved ) . to be ( value )
468+ end
469+ end
447470 end
448471
449472 describe "#lazy?" do
You can’t perform that action at this time.
0 commit comments