AMS не используют тип при сохранении полиморфного отношения - PullRequest
0 голосов
/ 19 апреля 2019

Когда attachment пропатчен с его полиморфным отношением, сохраняется только идентификатор, а тип игнорируется.Это делается через JSONAPI, и я думаю, что это может происходить из AMS

Проблема:

Вот как рельсы получают обновление JSON:

{"data"=>{"id"=>"94", "attributes"=>{"file-file-name"=>"logo.png"}, "relationships"=>{"attachmentable"=>{"data"=>{"type"=>"ticket/replies", "id"=>"192"}}}, "type"=>"ticket/attachments"}, "id"=>"94"}

Как вы можете видетьтип отношения упоминается как ticket\replies.Rails сохраняет только идентификатор: UPDATE "ticket_attachments" SET "attachmentable_id" = $1, "updated_at" = $2 WHERE "ticket_attachments"."id" = $3

Такое же отношение используется в других местах на статических страницах, и оно корректно обрабатывает отношение.

Почему оно игнорирует тип?Это связано с пространством имен / модулем?

Код, связанный с этим:

Используются различные соотношения:

class Ticket::Reply < ApplicationRecord
  has_many :attachments, as: :attachmentable, :dependent => :destroy
end
class Ticket::Attachment < ApplicationRecord
  belongs_to :attachmentable, :polymorphic=>true
end

Это действие контроллера иметод params

module Api::V1
  module Ticket
    class AttachmentsController < MarketadminController
      def create
        build_attachment
        save_attachment
        json_response @attachment
      end
      private

      def build_attachment
        @attachment ||= attachment_scope.build
        @attachment.attributes=attachment_params
      end

      def attachment_params
        ActiveModelSerializers::Deserialization.
        jsonapi_parse(params)
      end
    end 
  end
end

РЕДАКТИРОВАТЬ: обновлен AMS до последней версии 0.10.9, та же проблема

...