Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 更改使用曲别针/滑轨保存文件的路径_Ruby On Rails_Amazon S3_Paperclip - Fatal编程技术网

Ruby on rails 更改使用曲别针/滑轨保存文件的路径

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 =

我正在制作Rails应用程序,并使用回形针将文件上传到AWS S3 bucket。 在我的模型中,我按照以下方式进行配置:

 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”