Module: JSONAPI::ActiveStorageSupport

Extended by:
ActiveSupport::Concern
Included in:
Deserializer, ResourceActions, Serializer
Defined in:
lib/json_api/support/active_storage_support.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#active_storage_attachment?(association_name, model_class = nil) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
# File 'lib/json_api/support/active_storage_support.rb', line 19

def active_storage_attachment?(association_name, model_class = nil)
  resolved = model_class || resolve_model_class_for_attachment
  self.class.active_storage_attachment?(association_name, resolved)
end

#append_only_enabled?(attachment_name, resource_class) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/json_api/support/active_storage_support.rb', line 44

def append_only_enabled?(attachment_name, resource_class)
  ActiveStorage::Deserialization.append_only_enabled?(attachment_name, resource_class)
end

#attach_active_storage_files(record, attachment_params, resource_class: nil) ⇒ Object



36
37
38
# File 'lib/json_api/support/active_storage_support.rb', line 36

def attach_active_storage_files(record, attachment_params, resource_class: nil)
  ActiveStorage::Deserialization.attach_files(record, attachment_params, definition: resource_class)
end

#extract_active_storage_params_from_hash(params_hash, model_class) ⇒ Object



32
33
34
# File 'lib/json_api/support/active_storage_support.rb', line 32

def extract_active_storage_params_from_hash(params_hash, model_class)
  ActiveStorage::Deserialization.extract_params_from_hash(params_hash, model_class)
end

#filter_active_storage_from_includes(includes_hash, current_model_class) ⇒ Object



52
53
54
# File 'lib/json_api/support/active_storage_support.rb', line 52

def filter_active_storage_from_includes(includes_hash, current_model_class)
  ActiveStorage::Detection.filter_from_includes(includes_hash, current_model_class)
end

#filter_polymorphic_from_includes(includes_hash, current_model_class) ⇒ Object



56
57
58
# File 'lib/json_api/support/active_storage_support.rb', line 56

def filter_polymorphic_from_includes(includes_hash, current_model_class)
  ActiveStorage::Detection.filter_polymorphic_from_includes(includes_hash, current_model_class)
end

#find_blob_by_signed_id(signed_id) ⇒ Object



72
73
74
# File 'lib/json_api/support/active_storage_support.rb', line 72

def find_blob_by_signed_id(signed_id)
  ActiveStorage::Deserialization.find_blob_by_signed_id(signed_id)
end

#find_relationship_definition(attachment_name, resource_class) ⇒ Object



48
49
50
# File 'lib/json_api/support/active_storage_support.rb', line 48

def find_relationship_definition(attachment_name, resource_class)
  ActiveStorage::Deserialization.find_relationship_definition(attachment_name, resource_class)
end

#process_active_storage_attachment(attrs, association_name, id_or_ids, singular:) ⇒ Object



68
69
70
# File 'lib/json_api/support/active_storage_support.rb', line 68

def process_active_storage_attachment(attrs, association_name, id_or_ids, singular:)
  ActiveStorage::Deserialization.process_attachment(attrs, association_name, id_or_ids, singular:)
end

#purge_on_nil_enabled?(attachment_name, resource_class) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/json_api/support/active_storage_support.rb', line 40

def purge_on_nil_enabled?(attachment_name, resource_class)
  ActiveStorage::Deserialization.purge_on_nil_enabled?(attachment_name, resource_class)
end

#resolve_model_class_for_attachmentObject

Raises:

  • (NotImplementedError)


24
25
26
27
28
29
30
# File 'lib/json_api/support/active_storage_support.rb', line 24

def resolve_model_class_for_attachment
  return send(:model_class) if respond_to?(:model_class, true)
  return send(:resource_model_class) if respond_to?(:resource_model_class, true)
  return send(:resource).class if respond_to?(:resource, true) && send(:resource).respond_to?(:class)

  raise NotImplementedError, "Must implement resource_model_class or provide model_class parameter"
end

#serialize_active_storage_relationship(attachment_name, record) ⇒ Object



60
61
62
# File 'lib/json_api/support/active_storage_support.rb', line 60

def serialize_active_storage_relationship(attachment_name, record)
  ActiveStorage::Serialization.serialize_relationship(attachment_name, record)
end

#serialize_blob_identifier(blob) ⇒ Object



64
65
66
# File 'lib/json_api/support/active_storage_support.rb', line 64

def serialize_blob_identifier(blob)
  ActiveStorage::Serialization.serialize_blob_identifier(blob)
end