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) 跳过验证
我有附件
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) 跳过验证