14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/belongs_to_polymorphic/associations.rb', line 14
def belongs_to_polymorphic(name, **options)
default_belongs_to name, **options
polymorphic = options[:polymorphic]
return unless polymorphic.present? && polymorphic.class != TrueClass
allowed_classes = classify(polymorphic)
validates "#{name}_type", inclusion: {
in: inclusion_classes(allowed_classes, options[:optional]),
message: I18n.t('belongs_to_polymorphic.errors.messages.class_not_allowed',
class: '%<value>s')
}
define_singleton_method("#{name}_types") { allowed_classes }
define_generic_finder_method(name)
define_scopes_and_instance_methods(name, allowed_classes)
end
|