active_model_serializers/lib/active_model/serializer/adapter.rb
2014-11-05 16:47:15 -08:00

30 lines
732 B
Ruby

module ActiveModel
class Serializer
class Adapter
extend ActiveSupport::Autoload
autoload :Json
autoload :Null
autoload :JsonApi
attr_reader :serializer
def initialize(serializer, options = {})
@serializer = serializer
@options = options
end
def serializable_hash(options = {})
raise NotImplementedError, 'This is an abstract method. Should be implemented at the concrete adapter.'
end
def as_json(options = {})
if fields = options.delete(:fields)
options[:fieldset] = ActiveModel::Serializer::Fieldset.new(fields, serializer.json_key)
end
serializable_hash(options).to_json
end
end
end
end