class ViewModel::ActiveRecord::NestedControllerBase::ParentProxyModel

Attributes

association_data[R]
changed_children[R]
parent[R]

Public Class Methods

new(parent, association_data, changed_children) click to toggle source
# File lib/view_model/active_record/nested_controller_base.rb, line 16
def initialize(parent, association_data, changed_children)
  @parent = parent
  @association_data = association_data
  @changed_children = changed_children
end

Public Instance Methods

serialize(json, serialize_context:) click to toggle source
# File lib/view_model/active_record/nested_controller_base.rb, line 22
def serialize(json, serialize_context:)
  ViewModel::Callbacks.wrap_serialize(parent, context: serialize_context) do
    child_context = parent.context_for_child(association_data.association_name, context: serialize_context)

    json.set!(ViewModel::ID_ATTRIBUTE, parent.id)
    json.set!(ViewModel::BULK_UPDATE_ATTRIBUTE) do
      if association_data.referenced? && !association_data.owned?
        if association_data.collection?
          json.array!(changed_children) do |child|
            ViewModel.serialize_as_reference(child, json, serialize_context: child_context)
          end
        else
          ViewModel.serialize_as_reference(changed_children, json, serialize_context: child_context)
        end
      else
        ViewModel.serialize(changed_children, json, serialize_context: child_context)
      end
    end
  end
end