module BelongsToPolymorphicAssociation
Public Instance Methods
define_accessors(model, reflection)
click to toggle source
Calls superclass method
# File lib/polymorphic_aliases/active_record/associations/builder/belongs_to_polymorphic_association.rb, line 13 def define_accessors(model, reflection) super mixin = model.generated_association_methods if reflection.polymorphic? && reflection.options[:types].present? define_aliases(mixin, reflection) end end
define_aliases(mixin, reflection)
click to toggle source
# File lib/polymorphic_aliases/active_record/associations/builder/belongs_to_polymorphic_association.rb, line 23 def define_aliases(mixin, reflection) types = reflection.options[:types] association_name = reflection.name types.each do |type| name = type.tableize.tr("/", "_").singularize type = type.inspect mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name} if #{type} == self["#{association_name}_type"] association(:#{association_name}).reader end end def #{name}=(value) if #{type} == self["#{association_name}_type"] association(:#{association_name}).writer(value) end end def reload_#{name} if #{type} == self["#{association_name}_type"] association(:#{association_name}).force_reload_reader end end CODE end end
valid_options(options)
click to toggle source
Calls superclass method
# File lib/polymorphic_aliases/active_record/associations/builder/belongs_to_polymorphic_association.rb, line 7 def valid_options(options) valid = super valid += [:types] if options[:polymorphic] valid end