@@ -34,6 +34,7 @@ def belongs_to(name, scope = nil, **options)
3434 mapping = self . class . send ( "#{ foreign_type } _mapping" )
3535 enum = mapping . key ( klass . to_s )
3636 if klass . kind_of? ( Class ) && klass <= ActiveRecord ::Base
37+ enum ||= mapping . key ( klass . polymorphic_name ) if klass . respond_to? ( :polymorphic_name )
3738 enum ||= mapping . key ( klass . sti_name )
3839 enum ||= mapping . key ( klass . base_class . to_s )
3940 enum ||= mapping . key ( klass . base_class . sti_name )
@@ -69,14 +70,15 @@ def remove_type_and_establish_mapping(name, options, scope)
6970 if options [ :as ] && ( polymorphic_type_mapping || integer_type )
7071 poly_type = options . delete ( :as )
7172 polymorphic_type_mapping ||= PolymorphicIntegerType ::Mapping [ poly_type ]
72- if polymorphic_type_mapping == nil
73+ if polymorphic_type_mapping . nil?
7374 raise "Polymorphic type mapping missing for #{ poly_type . inspect } "
7475 end
7576
76- klass_mapping = ( polymorphic_type_mapping || { } ) . key ( sti_name )
77+ klass_mapping = polymorphic_type_mapping . key ( polymorphic_name ) if respond_to? ( :polymorphic_name )
78+ klass_mapping ||= polymorphic_type_mapping . key ( sti_name )
7779
78- if klass_mapping == nil
79- raise "Class not found for #{ sti_name . inspect } in polymorphic type mapping: #{ polymorphic_type_mapping } "
80+ if klass_mapping . nil?
81+ raise "Class not found for #{ inspect } in polymorphic type mapping: #{ polymorphic_type_mapping } "
8082 end
8183
8284 options [ :foreign_key ] ||= "#{ poly_type } _id"
0 commit comments