Class: Form::ModelDeserializer

Inherits:
BaseDeserializer show all
Defined in:
app/deserializers/form/model_deserializer.rb

Instance Method Summary collapse

Methods inherited from BaseDeserializer

#initialize

Constructor Details

This class inherits a constructor from Form::BaseDeserializer

Instance Method Details

#deserialize ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/deserializers/form/model_deserializer.rb', line 3

def deserialize
  return nil unless @params
  allowed = @params.require(:model).permit(
    :preview_file_id, # i18n-tasks-use t("activerecord.attributes.model.preview_file")
    :creator_id, # i18n-tasks-use t("activerecord.attributes.model.creator_id")
    :library_id, # i18n-tasks-use t("activerecord.attributes.model.library_id")
    :name, # i18n-tasks-use t("activerecord.attributes.model.name")
    :caption, # i18n-tasks-use t("activerecord.attributes.model.caption")
    :notes, # i18n-tasks-use t("activerecord.attributes.model.notes")
    :license, # i18n-tasks-use t("activerecord.attributes.model.license")
    :sensitive, # i18n-tasks-use t("activerecord.attributes.model.sensitive")
    :indexable, # i18n-tasks-use t("activerecord.attributes.model.indexable")
    :ai_indexable, # i18n-tasks-use t("activerecord.attributes.model.ai_indexable")
    :entrypoint_id, # i18n-tasks-use t("activerecord.attributes.model.entrypoint")
    :entrypoint_fragment, # i18n-tasks-use t("activerecord.attributes.model.entrypoint_fragment")
    :q,
    :library,
    :creator,
    :tag,
    :organize,
    :missingtag,
    collection_ids: [],
    tag_list: [],
    links_attributes: [:id, :url, :text, :_destroy], # i18n-tasks-use t("activerecord.attributes.link.url")
    relationships_attributes: [:id, :predicate, :objekt_id, :_destroy] # i18n-tasks-use t("activerecord.attributes.model.relationships")
  )
  if allowed[:relationships_attributes]
    allowed[:relationships_attributes] = allowed[:relationships_attributes].to_h.map do |k, attrs|
      attrs[:objekt] = ModelPolicy::Scope.new(@user, Model).resolve.find_param(attrs.delete(:objekt_id)) if attrs[:objekt_id] && attrs[:id].nil?
      attrs
    end
  end
  allowed[:collections] = CollectionPolicy::Scope.new(@user, Collection).resolve.where(public_id: allowed.delete(:collection_ids)) if allowed[:collection_ids]
  return allowed unless user_can_set_permissions?
  allowed.deep_merge(caber_relations_attributes(type: :model))
end