Sha256: 20fdf40d39afdd635300a8002fb94bda7c4612d3436b4ecc9714e60123a9d8d9
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
module ForestRails class SerializerFactory def initialize @serializers = {} end def serializer_for(active_record_class) overriden_serializer(active_record_class) || registered_serializer(active_record_class) || generated_serializer(active_record_class) end private def overriden_serializer(active_record_class) begin "ForestRails::#{active_record_class}Serializer".constantize; rescue end end def registered_serializer(active_record_class) @serializers[key(active_record_class)] end def generated_serializer(active_record_class) associations = active_record_class.reflect_on_all_associations column_names = active_record_class.column_names key = key(active_record_class) serializer = @serializers[key] = Class.new(ActiveModel::Serializer) serializer.attributes(*column_names) associations.each do |association| serializer.send( association.macro, association.name, serializer: serializer_for(association.active_record)) end serializer end def key(active_record_class) active_record_class.to_s.tableize.to_sym end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
forest_rails-0.0.4 | app/serializers/forest_rails/serializer_factory.rb |