Active Storage引发ActiveSupport :: MessageVerifier :: InvalidSignature

时间:2018-01-09 06:41:46

标签: ruby-on-rails rails-activestorage

要使用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。

2 个答案:

答案 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}}