Module: SafePolymorphic::Associations::ClassMethods

Defined in:
lib/safe_polymorphic/associations.rb

Instance Method Summary collapse

Instance Method Details

#safe_polymorphic(name, **options) ⇒ Object



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