Rails:无法使用方法设置选项

时间:2017-04-11 09:41:12

标签: ruby-on-rails ruby

例如,这是我的回形针配置。这是我的模型文件:

class File < ApplicationRecord  
   belongs_to :attachable, polymorphic: true, optional: true
   has_attached_file(:attach_file, local_option)
end

在此模型文件中,我定义了两个名为local_options3_option的选项。

def local_option
  {
    :storage => :filesystem,
    :path    => 'public/:class/:id/:basename.:extension'
  }
end

def s3_option
  {
    :storage    => :s3,
    :s3_headers => lambda { |attachment| {'Content-Type' => attachment.attach_file_content_type} }
  }
end

当我跑步时,我遇到了这个错误:

  

method_missing':未定义的局部变量或方法`local_option'   类:0x007fc9be09dac8&GT; (NameError)

我不知道为什么ruby / rails没有看到local_option方法。请告诉我怎么做。

由于

1 个答案:

答案 0 :(得分:0)

它应该是类实例方法,而不是实例方法。

def self.local_option
  {
    storage: :filesystem,
    path:    'public/:class/:id/:basename.:extension'
  }
end

瞧 - 错误消失了。

建议:因为它是不变的数据,我会把它变成一个常数:

LOCAL_FILE_OPTIONS = {
  storage: :filesystem,
  path:    'public/:class/:id/:basename.:extension'
}.freeze

现在

has_attached_file(:attach_file, LOCAL_FILE_OPTIONS)