Ruby on rails 如何获取模型类Rails+;回形针

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

我正在尝试为一个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_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”