Sha256: a1ae46c5d23b90e7c043343a637dc1822344d152588145cd72b85798352c0946
Contents?: true
Size: 958 Bytes
Versions: 3
Compression:
Stored size: 958 Bytes
Contents
require "active_model_serializers" require "serializer_field_filter/version" require "serializer_field_filter/resource_options" require "serializer_field_filter/all_field" require "serializer_field_filter/none_field" require "serializer_field_filter/relation" class SerializerFieldFilter include ResourceOptions attr_reader :fields def initialize(fields = []) @fields = fields end def self.init(fields = nil) fields.present? ? new(fields) : AllField.new end def root_fields return if fields.blank? fields.map { |field| field.split('.').first.to_sym }.uniq end def scope_of(resource_name) if fields.include?(resource_name.to_s) AllField.new else scope_fields = fields.select { |field| field.start_with?("#{resource_name}.") } .map { |field| field.split('.', 2).last } scope_fields.present? ? SerializerFieldFilter.new(scope_fields) : NoneField.new end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
serializer_field_filter-0.0.3 | lib/serializer_field_filter.rb |
serializer_field_filter-0.0.2 | lib/serializer_field_filter.rb |
serializer_field_filter-0.0.1 | lib/serializer_field_filter.rb |