class Wallaby::ActiveRecord::ModelDecorator::FieldsBuilder::PolymorphicBuilder
To build the metadata for polymorphic
Public Instance Methods
update(metadata, reflection)
click to toggle source
update the metadata @param metadata [Hash] @param reflection [ActiveRecord::Reflection]
# File lib/adapters/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb, line 12 def update(metadata, reflection) if reflection.polymorphic? metadata[:is_polymorphic] = true metadata[:polymorphic_type] = reflection.foreign_type metadata[:polymorphic_list] = polymorphic_list_for(reflection) else metadata[:class] = reflection.klass end end
Protected Instance Methods
all_model_class()
click to toggle source
@return [Array<Class>] a list of all ActiveRecord
classes
# File lib/adapters/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb, line 33 def all_model_class Map .mode_map .select { |_, mode| mode == ::Wallaby::ActiveRecord }.keys end
polymorphic_defined?(model_class, polymorphic_name)
click to toggle source
@param model_class [Class] @param polymorphic_name [String] polymorphic name @return [true] if polymorphism defined? @return [false] otherwise
# File lib/adapters/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb, line 43 def polymorphic_defined?(model_class, polymorphic_name) polymorphic_name_sym = polymorphic_name.try(:to_sym) model_class.reflections.any? do |_field_name, reflection| reflection.options[:as].try(:to_sym) == polymorphic_name_sym end end
polymorphic_list_for(reflection)
click to toggle source
@param reflection [ActiveRecord::Reflection] @return [Array<Class>] a list of classes for this polymorphism
# File lib/adapters/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb, line 26 def polymorphic_list_for(reflection) all_model_class.each_with_object([]) do |model_class, list| list << model_class if polymorphic_defined? model_class, reflection.name end end