Ruby on rails 更改使用曲别针/滑轨保存文件的路径
我正在制作Rails应用程序,并使用回形针将文件上传到AWS S3 bucket。 在我的模型中,我按照以下方式进行配置:Ruby on rails 更改使用曲别针/滑轨保存文件的路径,ruby-on-rails,amazon-s3,paperclip,Ruby On Rails,Amazon S3,Paperclip,我正在制作Rails应用程序,并使用回形针将文件上传到AWS S3 bucket。 在我的模型中,我按照以下方式进行配置: class File < ApplicationRecord has_attached_file :attachment, :url => "/sample_pdf/:basename.:extension", :path =
class File < ApplicationRecord
has_attached_file :attachment,
:url => "/sample_pdf/:basename.:extension",
:path => "/sample_pdf/:basename.:extension"
validates_attachment :attachment,
:content_type => {
:content_type =>
["application/pdf"]
}
end
类文件“/sample\u pdf/:basename.:extension”,
:path=>“/sample\u pdf/:basename.:extension”
验证_附件:附件,
:内容\类型=>{
:内容\类型=>
[“应用程序/pdf”]
}
结束
我面临的问题是,有时我需要将文件上传到“/sample\u pdf/:basename.:extension”
,有时我需要上传到其他路径,如下面的“/other\u pdf\u folder/:basename.:extension”
我不确定是否有办法根据需要更改存储文件的路径
谢谢。您可以通过模型中的方法动态设置路径
class File < ApplicationRecord
has_attached_file :attachment,
:url => "/sample_pdf/:basename.:extension",
:path => :attachment_dynamic_path,
validates_attachment :attachment,
:content_type => {
:content_type => ["application/pdf"]
}
def attachment_dynamic_path
condition ? "/sample_pdf/:basename.:extension" : "/another_pdf_folder/:basename.:extension"
end
end
类文件“/sample\u pdf/:basename.:extension”,
:path=>:附件\动态\路径,
验证_附件:附件,
:内容\类型=>{
:content_type=>[“application/pdf”]
}
def附件_动态_路径
条件“/sample\u pdf/:basename.:extension”:“/另一个\u pdf\u文件夹/:basename.:extension”
结束
结束
您可以通过模型中的方法来动态设置路径
class File < ApplicationRecord
has_attached_file :attachment,
:url => "/sample_pdf/:basename.:extension",
:path => :attachment_dynamic_path,
validates_attachment :attachment,
:content_type => {
:content_type => ["application/pdf"]
}
def attachment_dynamic_path
condition ? "/sample_pdf/:basename.:extension" : "/another_pdf_folder/:basename.:extension"
end
end
类文件“/sample\u pdf/:basename.:extension”,
:path=>:附件\动态\路径,
验证_附件:附件,
:内容\类型=>{
:content_type=>[“application/pdf”]
}
def附件_动态_路径
条件“/sample\u pdf/:basename.:extension”:“/另一个\u pdf\u文件夹/:basename.:extension”
结束
结束
我不太熟悉这种情况。我应该采取哪种行动?有没有一种方法可以选择一个呢?你没有任何条件可以让你将文件保存在这两个路径中吗?所以我有两个不同的模型:ServiceA,ServiceB。每个型号都有许多文件
,因此我可以在每个服务下上载多个文件。根据我使用的服务,路径应该改变。但是我不确定如何在文件
模型级别检查我将文件上载到哪个服务。因此路径将依赖于服务
吗?如果是这种情况,您也可以这样做,假设每个服务都有名称
:path=>“/#{self.service.name}\u pdf/:basename.:extension”
我不太熟悉这种情况。我应该采取哪种行动?有没有一种方法可以选择一个呢?你没有任何条件可以让你将文件保存在这两个路径中吗?所以我有两个不同的模型:ServiceA,ServiceB。每个型号都有许多文件
,因此我可以在每个服务下上载多个文件。根据我使用的服务,路径应该改变。但是我不确定如何在文件模型级别检查我将文件上载到哪个服务。因此路径将依赖于服务吗?如果是这种情况,您也可以这样做,假设每个服务都有名称:path=>“/#{self.service.name}\u pdf/:basename::extension”