Rails 和 Shrine 创建带有附件的模型记录
Rails and Shrine create model record with attachment
我需要使用上传器通过 Shrine 上传图片,我这里有示例中的默认上传器,包括一些衍生工具。
点赞https://shrinerb.com/docs/getting-started
但我想在 IRB 中创建新实例,但我不知道如何将图像正确传递给 Shrine。当我完成它时,它将在脚本中用于转换一堆图像。
如果我这样做:
Images.new(
title: title,
image: File.open("image.png")
)
验证失败,因为 mime-type 为空。当我使用表单上传图片时,有 ActionDispatch::Http::UploadedFile 个包含完整信息的对象。
请问,我怎样才能将图像传递给上传者以进行正确处理、mime 类型存储和创建衍生品?
如果我试试这个。
attacher = Shrine::Attacher.from_model(new_image, :image)
attacher.assign(image)
inside image 是图像的路径,它失败于:
*** JSON::ParserError Exception: 784: unexpected token at
如果我将 File.open(image) 传递给 assign 方法,我会得到上传的原始图像,但没有 mime 类型,也没有衍生图像。
我有点困惑。
谢谢
我有办法。
Shrine 上传器需要一个以 bin 模式打开的文件对象,所以
image: File.open(image, binmode: true)
正在创建模型实例 class。
有时当您看到此解析错误时,这是因为该记录在您尝试更新的列中已有一些数据。因此它尝试将此列读取为 JSON,但由于它可能是字符串或随机字符,因此它将失败。尝试查看您的数据库中是否存在非 null 或非 JSON {} 值。
我需要使用上传器通过 Shrine 上传图片,我这里有示例中的默认上传器,包括一些衍生工具。
点赞https://shrinerb.com/docs/getting-started
但我想在 IRB 中创建新实例,但我不知道如何将图像正确传递给 Shrine。当我完成它时,它将在脚本中用于转换一堆图像。
如果我这样做:
Images.new(
title: title,
image: File.open("image.png")
)
验证失败,因为 mime-type 为空。当我使用表单上传图片时,有 ActionDispatch::Http::UploadedFile 个包含完整信息的对象。
请问,我怎样才能将图像传递给上传者以进行正确处理、mime 类型存储和创建衍生品?
如果我试试这个。
attacher = Shrine::Attacher.from_model(new_image, :image)
attacher.assign(image)
inside image 是图像的路径,它失败于:
*** JSON::ParserError Exception: 784: unexpected token at
如果我将 File.open(image) 传递给 assign 方法,我会得到上传的原始图像,但没有 mime 类型,也没有衍生图像。
我有点困惑。
谢谢
我有办法。
Shrine 上传器需要一个以 bin 模式打开的文件对象,所以
image: File.open(image, binmode: true)
正在创建模型实例 class。
有时当您看到此解析错误时,这是因为该记录在您尝试更新的列中已有一些数据。因此它尝试将此列读取为 JSON,但由于它可能是字符串或随机字符,因此它将失败。尝试查看您的数据库中是否存在非 null 或非 JSON {} 值。