使用paperclip gem时使用model属性:filename

时间:2015-03-16 14:37:18

标签: ruby ruby-on-rails-3 paperclip

我在尝试将我的回形针附件的文件名更改为等于我将回形针文件附加到的类的属性时收到错误。

当我使用“#{self.company_name}”时,它会出错。显然在这个范围内,“自我”不是公司。当我写这一行时,我认为self是我正在上传此附件的公司实例。知道如何解决这个问题吗? Paperclip文档说使用“:filename”但我想使用Company.company_name的值。

class Company < ActiveRecord::Base
  include AliasAttrs

  has_attached_file :company_logo, {

      :storage => :ftp,

      :path => "/logos/#{self.company_name}",

      :url => FTP_CONFIG[:access_host]+"logos/:filename",

      :ftp_servers => [
        {
          :host     => FTP_CONFIG[:host],
          :user     => FTP_CONFIG[:user],
          :password => FTP_CONFIG[:pass],
          :port     => 21 # optional, 21 by default
        }
      ]
  }
end

更新

我尝试使用此帖中的建议:https://robots.thoughtbot.com/paperclip-tips-and-updates

但是现在我在启动服务器时遇到以下错误:

undefined method `interpolations' for Paperclip::Attachment:Class (NoMethodError)

1 个答案:

答案 0 :(得分:2)

看起来插值的语法已经改变了。更新了它,它工作。将以下内容添加到模型中或在config / initializers

中创建paperclip.rb文件
  Paperclip.interpolates :company_name do |attachment, style|
    attachment.instance.company_name
  end