diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index e05c340b2..42ad220c0 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -22,21 +22,20 @@ def serialization_scope def get_serializer(resource, options = {}) if !use_adapter? warn 'ActionController::Serialization#use_adapter? has been removed. '\ - "Please pass 'adapter: false' or see ActiveSupport::SerializableResource#serialize" + "Please pass 'adapter: false' or see ActiveSupport::SerializableResource.new" options[:adapter] = false end - ActiveModel::SerializableResource.serialize(resource, options) do |serializable_resource| - if serializable_resource.serializer? - serializable_resource.serialization_scope ||= serialization_scope - serializable_resource.serialization_scope_name = _serialization_scope - begin - serializable_resource.adapter - rescue ActiveModel::Serializer::ArraySerializer::NoSerializerError - resource - end - else + serializable_resource = ActiveModel::SerializableResource.new(resource, options) + if serializable_resource.serializer? + serializable_resource.serialization_scope ||= serialization_scope + serializable_resource.serialization_scope_name = _serialization_scope + begin + serializable_resource.adapter + rescue ActiveModel::Serializer::ArraySerializer::NoSerializerError resource end + else + resource end end diff --git a/lib/active_model/serializable_resource.rb b/lib/active_model/serializable_resource.rb index d3565f9a5..0791385bc 100644 --- a/lib/active_model/serializable_resource.rb +++ b/lib/active_model/serializable_resource.rb @@ -3,6 +3,8 @@ module ActiveModel class SerializableResource ADAPTER_OPTION_KEYS = Set.new([:include, :fields, :adapter]) + # Primary interface to composing a resource with a serializer and adapter. + # @return the serializable_resource, ready for #as_json/#to_json/#serializable_hash. def initialize(resource, options = {}) @resource = resource @adapter_opts, @serializer_opts = @@ -11,20 +13,6 @@ def initialize(resource, options = {}) delegate :serializable_hash, :as_json, :to_json, to: :adapter - # Primary interface to building a serializer (with adapter) - # If no block is given, - # returns the serializable_resource, ready for #as_json/#to_json/#serializable_hash. - # Otherwise, yields the serializable_resource and - # returns the contents of the block - def self.serialize(resource, options = {}) - serializable_resource = SerializableResource.new(resource, options) - if block_given? - yield serializable_resource - else - serializable_resource - end - end - def serialization_scope=(scope) serializer_opts[:scope] = scope end