Ruby on rails 如何获取模型类Rails+;回形针
我正在尝试为一个mp3对象设置一些元数据,我正在尝试将其上载到我的 AWS S3使用回形针穿过导轨Ruby on rails 如何获取模型类Rails+;回形针,ruby-on-rails,paperclip,Ruby On Rails,Paperclip,我正在尝试为一个mp3对象设置一些元数据,我正在尝试将其上载到我的 AWS S3使用回形针穿过导轨 class myClass < ActiveRecord::Base attr_accessible :mp3, file_name attr_accessor :mp3, file_name has_attached_file :mp3, // some s3 credential info + bucket :s3_metadat
class myClass < ActiveRecord::Base
attr_accessible :mp3, file_name
attr_accessor :mp3, file_name
has_attached_file :mp3,
// some s3 credential info + bucket
:s3_metadata => {
:name => //get the name attr of the instance that I'm trying to save
}
classmyclass{
:name=>//获取我试图保存的实例的名称attr
}
这在Model.rb文件中
问题是,如果我想将元数据设置为该实例具有的某个属性
如何在此处访问该值?在类
ActiveRecord::Base
的对象上调用.attributes
,将返回所有属性的哈希值
在这种情况下,您可以使用lambda,比如
name: ->{ method_that_returns_the_name }
可能不会在类声明中设置文件名。你试过了吗
@object.file_name = 'My File Name'
@object.save
如果您想从其他地方获取名称,可以使用过滤器
before_save do
self.file_name = "image-#{self.id}"
end
要在示例中实现这一点,您可以使用:
class myClass < ActiveRecord::Base
attr_accessible :mp3, file_name
attr_accessor :mp3, file_name
has_attached_file :mp3,
// some s3 credential info + bucket
s3_headers: lambda { |attachment|
{ 'x-amz-meta-name' => attachment.instance.name }
}
classmyclassattachment.instance.name}
}
看起来s3_元数据不会占用一个进程,但是您可以使用s3_头,方法是在头前面加上前缀“x-amz-meta-”。您可以通过lambda中的attachment.instance来访问“myClass”的实例。但是我如何在模型类本身中做到这一点?您只是想更改文件名吗?我已经编辑了这个问题。因此,基本上在回形针的“has_attached_file”中,我想将元数据设置为该模型的“file_name”属性。那么您知道创建实例后我可以使用什么回形针方法来设置S3元数据吗?您是否尝试过编写
@object.file_name=“New file name”
?