Ruby on rails 回形针自定义插值(AWS S3的自定义路径)
我有三个关于回形针和AWS S3的问题 1) 在我的带有回形针的模型中,我有以下代码:Ruby on rails 回形针自定义插值(AWS S3的自定义路径),ruby-on-rails,ruby,amazon-web-services,amazon-s3,paperclip,Ruby On Rails,Ruby,Amazon Web Services,Amazon S3,Paperclip,我有三个关于回形针和AWS S3的问题 1) 在我的带有回形针的模型中,我有以下代码: has_attached_file :attachment, :url => "/songs/:user_id/:basename.:extension", :path => "/songs/:user_id/:basename.:extension" URL和路径之间有什么区别 2) 什么是:basename.:分机 3) 假设有两种模型:User和File用户有许多文件。回形
has_attached_file :attachment,
:url => "/songs/:user_id/:basename.:extension",
:path => "/songs/:user_id/:basename.:extension"
URL和路径之间有什么区别
2) 什么是:basename.:分机
3) 假设有两种模型:User
和File
<代码>用户有许多文件
。回形针路径和url在文件
模型中配置
在config/initializers/paperclip.rb
中,我输入了以下代码:
Paperclip.interpolates :user_id do |attachment, style|
attachment.instance.criteria.user_id
end
我确认上述代码工作正常。我的文件保存在songs/5/song.mp3
。我想将mp3文件保存在songs/user\u id\u 5/song.mp3
。我试着在下面做,但不起作用
Paperclip.interpolates :user_id do |attachment, style|
'user_id_' + attachment.instance.criteria.user_id
end
我怎样才能做到我想要的
path
是项目的键,url
是S3端点- url:S3URL有四个选项。您可以选择以域样式(bucket.s3.amazonaws.com)或 路径样式(s3.amazonaws.com/bucket)。您还可以指定CNAME (这要求将CNAME指定为:s3\u alias\u url。您可以 更多关于CNAMEs和S3的信息,请访问 docs.amazonwebservices.com/AmazonS3/latest/index.html?VirtualHosting.html 通常,这一点都不重要,你可以离开办公室 默认值(即路径样式或:s3\u path\u url)。但在某些情况下 路径不起作用,您需要使用域样式 (:s3\u domain\u url)。此处的任何其他内容都将被视为路径样式
- 路径:这是存储文件的bucket下的键。URL将由bucket和路径构建。这是您要插入的内容。键应该是唯一的,就像文件名一样,尽管S3(严格地说)是不支持目录,您仍然可以使用/分隔文件名的各个部分
bucket
或url
,调用方法时只需传递路径(即存储文件的位置)
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: 'mybucket'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: 'aws_region_id',
}
}
我不知道
你需要字符串插值
Paperclip.interpolates :user_id do |attachment, style|
"user_id_#{attachment.instance.criteria.user_id}"
end
在S3语言中,path
是项目的键,url
是S3端点
从
- url:S3URL有四个选项。您可以选择将bucket的名称放在域样式(bucket.S3.amazonaws.com)或
路径样式(s3.amazonaws.com/bucket)。您还可以指定CNAME
(这要求将CNAME指定为:s3\u alias\u url。您可以
更多关于CNAMEs和S3的信息,请访问
docs.amazonwebservices.com/AmazonS3/latest/index.html?VirtualHosting.html
通常,这一点都不重要,你可以离开办公室
默认值(即路径样式或:s3\u path\u url)。但在某些情况下
路径不起作用,您需要使用域样式
(:s3\u domain\u url)。此处的任何其他内容都将被视为路径样式
- 路径:这是存储文件的bucket下的键。URL将由bucket和路径构建。这是您要插入的内容。键应该是唯一的,就像文件名一样,尽管S3(严格地说)是不支持目录,您仍然可以使用/分隔文件名的各个部分
您可以在配置中配置bucket
或url
,调用方法时只需传递路径(即存储文件的位置)
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: 'mybucket'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: 'aws_region_id',
}
}
我不知道
你需要字符串插值
Paperclip.interpolates :user_id do |attachment, style|
"user_id_#{attachment.instance.criteria.user_id}"
end
因此,如果在has attached\u file
方法中有:path=>“:user\u id”…
,path的值是多少?如果在has attached\u file
方法中有:path=>“:user\u id”…
,path的值是多少?