Rails 附件未持久化

Rails attatchment not persisting

我有附件

class User < ApplicationRecord
  has_one_attached :avatar

当我创建用户并在我的种子上执行时

user = User.create({"name":"pedro})
file = open("#{Rails.root}/app/assets/img/user.png")
user.avatar.attach(io: file, filename: "user.png")
the avatar gets attached

然而,当我尝试在我的控制器上 replicate/update 时:

user = User.find(params["id"])
user.avatar.purge
file = open("#{Rails.root}/app/assets/img/user.png")
user.avatar.attach(io: file, filename: "user.png")

它以某种方式被附加(如果我在它之前执行 user.avatar.attached? false 并且在我附加它之后执行 true)但是 blob 没有 persist/get 保存到存储中。它以某种方式只存在于新创建的对象中。

我尝试寻找具有类似问题的问题,但没有成功。

我没有看到您将其保存到数据库的任何地方。尝试 user.new 而不是 user.create。附加文件后保存。

user = User.new({"name":"pedro})

file = open("#{Rails.root}/app/assets/img/user.png")

user.avatar.attach(io: file, filename: "user.png")

user.save

最好添加内容类型

user.avatar.attach(io: file, filename: "user.png" , content_type: 'image/png')

编辑(操作评论更新):您可以使用 user.save(validate: false) 跳过验证