एक्टिवस्टोरेज स्रोत कोड में लाइन दर लाइन जाने के घंटों बाद , और समान कमांड चला रहे हैं
@message = Message.new(message_params)
@message.save
बार - बार। हमें बार-बार वही यादृच्छिक परिणाम मिले। फिर हम संदेश के साथ छवि संलग्न करते समय मुद्रित लॉग रेल के माध्यम से गए और निम्नलिखित को देखा:
S3 Storage (363.4ms) Uploaded file to key: KBKeHJARTjnsVjkgSbbii4Bz (checksum: S0GjR1EyvYYbMKh44wqlag==)
ActiveStorage::Blob Create (0.4ms) INSERT INTO "active_storage_blobs" ("key", "filename", "content_type", "metadata", "byte_size", "checksum", "created_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["key", "KBKeHJARTjnsVjkgSbbii4Bz"], ["filename", "sample.pdf"], ["content_type", "application/pdf"], ["metadata", "{\"identified\":true}"], ["byte_size", 3028], ["checksum", "S0GjR1EyvYYbMKh44wqlag=="], ["created_at", "2018-07-26 04:54:33.029769"]]
ActiveStorage::Attachment Create (2.7ms) INSERT INTO "active_storage_attachments" ("name", "record_type", "record_id", "blob_id", "created_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "file"], ["record_type", "Message"], ["record_id", "534736"], ["blob_id", "0"], ["created_at", "2018-07-26 05:04:35.958831"]]
record_id
534736
. के रूप में सेट किया जा रहा था , एक यूआईडी के बजाय। यहीं हम गलत हो गए।
सक्रिय संग्रहण हमारे संदेश मॉडल के लिए पूर्णांक विदेशी कुंजी की अपेक्षा कर रहा था, और हम चाहते थे कि यह इसके बजाय uuid का उपयोग करे। इसलिए हमें अपने माइग्रेशन को ठीक करना पड़ा, पूर्णांक विदेशी कुंजियों के बजाय यूयूआईडी का उपयोग करने के लिए।
समाधान:
class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
def change
create_table :active_storage_blobs, id: :uuid do |t|
t.string :key, null: false
t.string :filename, null: false
t.string :content_type
t.text :metadata
t.bigint :byte_size, null: false
t.string :checksum, null: false
t.datetime :created_at, null: false
t.index [ :key ], unique: true
end
create_table :active_storage_attachments, id: :uuid do |t|
t.string :name, null: false
t.references :record, null: false, polymorphic: true, index: false, type: :uuid
t.references :blob, null: false, type: :uuid
t.datetime :created_at, null: false
t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
end
end
end
उम्मीद है कि यह मदद करता है, किसी को इसी तरह के मुद्दों का सामना करना पड़ रहा है। चीयर्स!