module ActionController::Serialization
def build_json_serializer(resource, options = {})
def build_json_serializer(resource, options = {}) options = default_serializer_options.merge(options) @namespace_for_serializer = options.fetch(:namespace, nil) if serializer = options.fetch(:serializer, default_serializer(resource)) options[:scope] = serialization_scope unless options.has_key?(:scope) if resource.respond_to?(:to_ary) options[:resource_name] = controller_name options[:namespace] = namespace_for_serializer if namespace_for_serializer end serializer.new(resource, options) end end
def default_serializer(resource)
def default_serializer(resource) options = {}.tap do |o| o[:namespace] = namespace_for_serializer if namespace_for_serializer end ActiveModel::Serializer.serializer_for(resource, options) end
def default_serializer_options
def default_serializer_options {} end
def namespace_for_class(klass)
def namespace_for_class(klass) if Module.method_defined?(:module_parent) klass.module_parent else klass.parent end end
def namespace_for_serializer
def namespace_for_serializer @namespace_for_serializer ||= namespace_for_class(self.class) unless namespace_for_class(self.class) == Object end
def serialization_scope
def serialization_scope _serialization_scope = self.class._serialization_scope send(_serialization_scope) if _serialization_scope && respond_to?(_serialization_scope, true) end