例如,这是我的回形针配置。这是我的模型文件:
class File < ApplicationRecord
belongs_to :attachable, polymorphic: true, optional: true
has_attached_file(:attach_file, local_option)
end
在此模型文件中,我定义了两个名为local_option
和s3_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
方法。请告诉我怎么做。
由于
答案 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)