Class: VersionSerializer::Versioner

Inherits:
Object
  • Object
show all
Defined in:
lib/version_serializers/versioner.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#class_nameObject

Returns the value of attribute class_name.



4
5
6
# File 'lib/version_serializers/versioner.rb', line 4

def class_name
  @class_name
end

#request_versionObject

Returns the value of attribute request_version.



4
5
6
# File 'lib/version_serializers/versioner.rb', line 4

def request_version
  @request_version
end

Class Method Details

.get_rendering_opts(resource, version, opts) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/version_serializers/versioner.rb', line 10

def self.get_rendering_opts(resource, version, opts)
  resource_class_name = resource.class.to_s
  serializer_key = :serializer
  if resource.is_a?(ActiveRecord::Relation)
    resource_class_name = resource_class_name.split("::").tap(&:pop).join("::")
    serializer_key = :each_serializer
  end
  serializer_class = get_serializer(resource_class_name, version)
  opts.merge!(json: resource, serializer_key => serializer_class)
end

.get_serializer(name, version) ⇒ Object



6
7
8
# File 'lib/version_serializers/versioner.rb', line 6

def self.get_serializer(name, version)
  send(:new, version, "#{name}_serializer".classify).get
end

Instance Method Details

#getObject



21
22
23
24
25
26
# File 'lib/version_serializers/versioner.rb', line 21

def get
  "V#{request_version}::#{class_name}".constantize
rescue NameError
  previous_version = request_version.to_i - 1
  previous_version == 0 ? raise(NameError) : self.class.new(previous_version, class_name).get
end