【发布时间】:2019-01-03 00:19:17
【问题描述】:
我们的应用程序在 Postgresql 数据库上使用 uuid 作为主键。 (标准设置描述here)。
我们按照here 描述的过程集成了 ActiveStorage。使用rails active_storage:install 并使用rails db:migrate 迁移的标准设置。
我们有一个模型和对应的控制器如下:
# Model
class Message < ApplicationRecord
has_one_attached :image
def filename
image&.attachment&.blob&.filename
end
end
# Controller
class MessagesController < ApplicationController
def create
message = Message.create!(message_params)
redirect_to message
end
private
def message_params
params.require(:message).permit(:title, :content, :image)
end
end
我们观察到前几组图像与模型实例正确关联,但随后我们为模型实例获取随机图像,或者根本没有图像。每次我们重启服务器,前几张图片都是正确的,但之后就无法预测了。
不确定,出了什么问题,我们在 rails 控制台调试:
params[:image]
=> #<ActionDispatch::Http::UploadedFile:0x007fcf2fa97b70 @tempfile=#<Tempfile:/var/folders/dt/05ncjr6s52ggc4bk6fs521qw0000gn/T/RackMultipart20180726-8503-vg36kz.pdf>, @original_filename="sample.pdf", @content_type="application/pdf", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"sample.pdf\"\r\nContent-Type: application/pdf\r\n">
在保存实例并检索文件名时,我们得到了一个随机文件,我们之前已上传。
@message = Message.new(message_params)
@message.filename
=> #<ActiveStorage::Filename:0x007fcf32cfd9e8 @filename="sample.pdf">
@message.save
@message.filename
=> #<ActiveStorage::Filename:0x007f82f2ad4ef0 @filename="OtherSamplePdf.pdf">
寻找这种奇怪行为的解释,以及可能的解决方案。
【问题讨论】:
标签: ruby-on-rails postgresql uuid rails-activestorage