14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/safe_polymorphic/associations.rb', line 14
def safe_polymorphic(name, **options)
unsafe_polymorphic name, **options
polymorphic = options[:polymorphic]
return unless polymorphic.present? && polymorphic.class != TrueClass
allowed_classes = classify(polymorphic)
validates "#{name}_type", inclusion: inclusion_validation(allowed_classes, options[:optional])
define_singleton_method("#{name}_types") { allowed_classes }
define_generic_finder_method(name)
define_scopes_and_instance_methods(name, allowed_classes)
end
|