在这里,我有一段代码应该根据我对 Ruby 中字符串插值的了解来工作。它在模型类中:“s3_file”
基本上我想要完成的是在将文件保存到 AWS S3 时,我想将它们保存在运行时使用以下字符串插值创建的文件夹下。我正在使用 Devise 和 cancan 作为授权和身份验证 gem
下面的代码有效:
Paperclip.interpolates :prefix do |attachment, style|
"#{Date.today.to_s }/system"
end
has_attached_file( :upload,
:path => ":prefix/:basename.:extension",
:storage => :s3,
:s3_credentials => {:access_key_id => "XXX",
:secret_access_key => "XXX"},
:bucket => "XXX"
)
但是,我正在尝试获取用户电子邮件并将其插入回形针块中。此代码无法按预期工作。此代码的结果并非异常,但 @curr_user_email 始终为空,因此 AWS S3 上的文件夹没有名称。但是该方法确实创建了一个文件夹。我该如何纠正?
这段代码仍然不起作用
if(@curr_user_signed_in)
@aPrefix = "#{Date.today.to_s }/#{@curr_user_email}"
else
@aPrefix = "#{Date.today.to_s }/system"
end
Paperclip.interpolates :prefix do |attachment, style|
@aPrefix
end
has_attached_file( :upload,
:path => ":prefix/:basename.:extension",
:storage => :s3,
:s3_credentials => {:access_key_id => "xxx",
:secret_access_key => "xxx"},
:bucket => "xxx"
)
在我的控制器中,我有这段代码:
def index
@s3_files = S3File.all
@curr_user_signed_in = false
if(user_signed_in?)
@curr_user_signed_in = true
@curr_user_email = current_user.email
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @s3_files }
end
end
所以真正的问题是这些@curr_user_signed_in = true @curr_user_email = current_user.email 被设置并且不为空,但由于某种原因它们不能被读入回形针块