类的未定义局部变量“ image”

问题描述

我想先加密文件,然后再将其存储在S3上。我正在使用Shrine进行上传,并使用LockBox进行加密。 Shrine#upload使用类似IO的对象,但是Lockbox documention排除了设置此对象所需的一些步骤。它只是说要做类似的事情:

class Photo < ApplicationRecord
 belongs_to :imageable,polymorphic: true
 validates_presence_of :image

 lockBox = LockBox.new(key: ENV['LOCKBox_MASTER_KEY'])
 PhotoUploader.upload(lockBox.encrypt_io(image),:store)
end

在这种情况下,image是未定义的局部变量。

如果文件用户上传的(并在控制器中列入白名单),我将如何在模型中访问它,以便在保存文件时可以执行此操作?

解决方法

您可以将其移至before_save方法中。如果您想这样做的话,也可以将其更改为after_save(问题尚不清楚)。

before_save :encyrpt_image

def encrypt_image
  lockbox = Lockbox.new(key: ENV['LOCKBOX_MASTER_KEY'])
  PhotoUploader.upload(lockbox.encrypt_io(self.image),:store)
end