Когда 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, та же проблема