要使用Active Storage将图像文件导入Rails应用程序,我写了一个像这样的Rake:
task :import_file => :environment do
path = Rails.root.join("tmp", "sample.jpg")
data = File.read(path)
post = Post.first
post.image.attach(data)
end
当我执行此任务时,我得到了一个例外ActiveSupport::MessageVerifier::InvalidSignature
。
如何避免此错误?
Post
模型的源代码是:
class Post < ApplicationRecord
has_one_attached :image
end
我使用默认的config/storage.yml
。
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
Rails的版本是5.2.0.beta2。
答案 0 :(得分:6)
在Edge API document上,我找到了答案。
desc "Import file"
task :import_file => :environment do
path = Rails.root.join("tmp", "sample.jpg")
post = Post.first
File.open(path) do |io|
post.image.attach(io: io, filename: "sample.jpg")
end
end
答案 1 :(得分:1)
只要在这里留下我的答案,以防万一有人遇到与我相同的问题。
我犯了一个愚蠢的错误,即在创建variant
时没有在参数中传递image_tag user.profile_photo.variant('200x200')
键:
image_tag user.profile_photo.variant(resize: '200x200')
应该已经通过:
{{1}}