这个错误通常是由于直接将 ActionDispatch::Http::UploadedFile 传递给 ActiveStorage 的 attach 方法而引起的。解决它的方法是将文件对象包装在实现了 ActiveStorage::Attached 中的模型中,然后使用 attach 方法将其附加到模型上。
示例代码:
# 1. 创建模型,实现 Attached 接口
class Post < ApplicationRecord
has_one_attached :image
end
# 2. 在控制器中接收上传的文件对象
def create
post = Post.create(post_params)
post.image.attach(params[:post][:image])
redirect_to post
end
private
def post_params
params.require(:post).permit(:title, :body)
end