У меня есть две модели с именем Post и Attachment. Я напрямую загружаю приложение в amazon s3 с помощью Fine-Uploader. После успешной загрузки на s3 я отправляю URL-адрес загруженного файла обратно на мой клиент в объекте JSON.У меня есть отношение Post и Attachment. Как создать вложение до создания сообщения
После того, как клиент получает URL-адрес s3, я отправляю запрос на отправку AJAX в конечную точку рельсов, где в идеале id нравится создавать вложение ПЕРЕД тем, что пользователь фактически отправляет @post для создания.
После создания @attachment я затем возвращаю идентификаторы @attachment обратно клиенту в формате JSON, чтобы, если/когда пользователь отправляет сообщение, я могу взять @ post.id и обновить идентификатор сообщения @attachment поле с идентификатором @post.
Это так, что если пользователь загружает вложения, но никогда не отправляет сообщение, у меня может быть задание, которое идет и удаляет все вложения, которые никогда не обновлялись с идентификатором сообщения.
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь создать вложение (Attachment.create()), создание записи возвращается.
Я знаю, что эту конфигурацию можно реализовать, потому что мой наставник и человек, который назначил мне эту проблему, являются гуру кода и направили меня сделать это таким образом. Проблема в том, что он путешествует за границу, поэтому я не могу связаться с ним за помощью по этому поводу. Я говорю, что, чтобы выразить, что я действительно ценю любую помощь, которую вы можете предложить, но если ваш совет состоит в том, чтобы отклоняться от этого метода, я просто не могу. Это необходимо, чтобы я реализовал этот путь.
Любая помощь, получающая эту работу, очень ценится.
[1] pry(main)> Attachment.create(description: 'ho ho ho', media_url: 'test.com')
(0.6ms) BEGIN
(0.8ms) ROLLBACK
=> #<Attachment:0x007f96b8c547b0
id: nil,
post_id: nil,
description: "ho ho ho",
media_url: "test.com",
created_at: nil,
updated_at: nil>
здесь все мои модели и миграции
class Post < ApplicationRecord
has_many :attachments, :dependent => :destroy
end
и
class Attachment < ApplicationRecord
belongs_to :post
end
миграциями выглядеть следующим образом
class CreatePosts < ActiveRecord::Migration[5.0]
def change
create_table :posts do |t|
t.references :categories
t.string :title, unique: true
t.text :body
t.text :tags, array: true, default: []
t.string :slug, unique: true
t.string :description
t.string :status
t.boolean :private_post, default: true
t.timestamps
end
add_index :posts, :slug
add_index :posts, :title
end
end
и
class CreateAttachments < ActiveRecord::Migration[5.0]
def change
create_table :attachments do |t|
t.references :post
t.string :description
t.string :media_url
t.timestamps
end
end
конец
У вас есть проверки в режиме вложения? Показывать ошибки после создания с помощью команды «Attachment.create» (описание: «ho ho ho», media_url: «test.com»). Errors.full_messages' –
'[2] pry (main)> Attachment.create (описание: 'ho ho ho ', media_url:' test.com '). errors.full_messages (325.9ms) BEGIN (39.1ms) ROLLBACK => ["Сообщение должно существовать"] ' – Verty00