Class: Clicksign::Resources::Membership

Inherits:
Clicksign::Resource show all
Defined in:
lib/clicksign/resources/membership.rb

Instance Attribute Summary

Attributes inherited from Clicksign::Resource

#id, #relationships

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Clicksign::Resource

#[], auto_paging_each, #base_path, client, #delete, each_page, fields, filter, filter_params, include, list, #method_missing, nested_list, order, page, per, #reload, #respond_to_missing?, retrieve, validate_jsonapi_include_types!, with_includes

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Clicksign::Resource

Class Method Details

.create(role:, user_id:, **attributes) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/clicksign/resources/membership.rb', line 8

def self.create(role:, user_id:, **attributes)
  super(
    **attributes,
    role: role,
    relationships: { user: { data: { type: 'users', id: user_id } } }
  )
end

Instance Method Details

#update(**attributes) ⇒ Object

Raises:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/clicksign/resources/membership.rb', line 16

def update(**attributes)
  raw = self.class.client.put(
    "#{base_path}/#{@id}",
    body: JsonApi::Serializer.dump(
      type: self.class.resource_type, id: @id, attributes: attributes,
    ),
  )
  parsed = JsonApi::Parser.parse(raw)
  data   = parsed[:data].first
  raise NotFoundError, 'API returned null data' if data.nil?

  load_data(data, parent_id: @_parent_id)
  self
end

#user_idObject



31
32
33
# File 'lib/clicksign/resources/membership.rb', line 31

def user_id
  relationships.dig('user', 'data', 'id')
end