lib/jsonapionify/api/resource/definitions/attributes.rb in jsonapionify-0.10.2 vs lib/jsonapionify/api/resource/definitions/attributes.rb in jsonapionify-0.11.0

- old
+ new

@@ -7,35 +7,13 @@ extend JSONAPIonify::Types inherited_array_attribute :attributes delegate :id_attribute, :attributes, to: :class context(:fields, readonly: true) do |context| - should_error = false - input_fields = context.request.params['fields'] || {} - actionable_fields = self.class.fields_for_action(context.action_name, context) - input_fields.each_with_object( - actionable_fields - ) do |(type, fields), field_map| - type_sym = type.to_sym - field_symbols = fields.to_s.split(',').map(&:to_sym) - field_map[type_sym] = - field_symbols.each_with_object([]) do |field, field_list| - type_attributes = self.class.api.resource(type_sym).attributes - attribute = type_attributes.find do |attribute| - attribute.name == field && - attribute.supports_read_for_action?(context.action_name, context) - end - if attribute - field_list << attribute.name - else - error(:field_not_permitted, type, field) - should_error = true - end - end - end.tap do - halt if should_error - end + context.params['fields']&.map do |type, fields| + [type, fields.split(',')] + end&.to_h end end end def id(sym) @@ -55,31 +33,13 @@ def remove_attribute(name) attributes.delete_if { |attr| attr.name == name.to_sym } end - def fields - attributes.select(&:read?).map(&:name) - end - def builder(&block) context :builder, readonly: true, persisted: true do |context| proc do |resource, instance| block.call resource, instance, context - end - end - end - - def field_valid?(name) - fields.include? name.to_sym - end - - def fields_for_action(action, context) - api.fields.each_with_object({}) do |(type, attrs), fields| - fields[type] = attrs.select do |attr| - api.resource(type).attributes.find do |type_attr| - type_attr.name == attr - end.supports_read_for_action? action, context end end end end