【问题标题】:Rails attatchment not persistingRails附件不持久
【发布时间】:2020-09-14 12:49:33
【问题描述】:

我有一个附件

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

但是,当我尝试在我的控制器上复制/更新它时:

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 不会持久/保存到存储中。它不知何故只存在于新创建的对象中。

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

【问题讨论】:

    标签: ruby-on-rails ruby image blob


    【解决方案1】:

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

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

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

    user.avatar.attach(io: 文件, 文件名: "user.png")

    user.save

    添加内容类型是个好习惯

    user.avatar.attach(io: 文件, 文件名: "user.png" , content_type: '图像/png')

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

    【讨论】:

    • 嘿,我尝试过使用 user.save 但它似乎触发了模型的验证,我得到:“保留友好”,“密码不能为空”,“密码太短(最少 7 个字符)”,有没有办法只更新那个属性?一些回复说通过使用“user.update_attributes”,但它仍然是一样的。谢谢你:)
    • user.save(validate: false)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2015-08-16
    • 2014-10-09
    • 2011-07-05
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多