class ActiveModel::Serializer::Reflection
def build_association(parent_serializer, parent_serializer_options, include_slice = {})
- Api: - private
Parameters:
-
parent_serializer_options
(Hash{Symbol => Object}
) -- -
parent_serializer
(Serializer
) -- for given association
def build_association(parent_serializer, parent_serializer_options, include_slice = {}) reflection_options = options.dup # Pass the parent's namespace onto the child serializer reflection_options[:namespace] ||= parent_serializer_options[:namespace] association_value = value(parent_serializer, include_slice) serializer_class = parent_serializer.class.serializer_for(association_value, reflection_options) reflection_options[:include_data] = include_data?(include_slice) reflection_options[:links] = @_links reflection_options[:meta] = @_meta if serializer_class serializer = catch(:no_serializer) do serializer_class.new( association_value, serializer_options(parent_serializer, parent_serializer_options, reflection_options) ) end if serializer.nil? reflection_options[:virtual_value] = association_value.try(:as_json) || association_value else reflection_options[:serializer] = serializer end elsif !association_value.nil? && !association_value.instance_of?(Object) reflection_options[:virtual_value] = association_value end block = nil Association.new(name, reflection_options, block) end