Sha256: bd9089455ec5ace06ac918de37eaaa8ed808d8608bb57b00aa6ca35c0756063c

Contents?: true

Size: 780 Bytes

Versions: 3

Compression:

Stored size: 780 Bytes

Contents

require 'active_model/serializer'

class KojacBaseSerializer < ActiveModel::Serializer

	self.root = false

	def initialize(object, options={})
		super(object,options)
	end

	SERIALIZABLE_TYPES = [NilClass,FalseClass,TrueClass,Fixnum,Bignum,String,Symbol,Hash,Array]

	def attributes
		attrs = nil
		source = if policy = Pundit::policy(scope,object)
			attrs = policy.permitted_attributes(:read).map(&:to_s)
			object.attributes
		elsif object.respond_to? :attributes
			object.attributes
		elsif object.is_a? Hash
			object
		end
		result = {}
		source.each do |k,v|
			k_s = k.to_s
			next if attrs && !attrs.include?(k_s)
			if SERIALIZABLE_TYPES.include? v.class
				result[k_s] = v
			else
				result[k_s] = KojacUtils.to_jsono(v,scope: scope)
			end
		end
		result
	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kojac-0.17.0 app/serializers/kojac_base_serializer.rb
kojac-0.16.0 app/serializers/kojac_base_serializer.rb
kojac-0.15.0 app/serializers/kojac_base_serializer.rb