2017-04-11 72 views
0

例如,這裏是我的回形針配置。這裏是我的模型文件:Rails:無法使用方法設置選項

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': undefined local variable or method `local_option' for Class:0x007fc9be09dac8> (NameError)

我不知道爲什麼的Ruby/Rails沒有看到local_option方法。請告訴我如何。

感謝

回答

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) 
+0

因爲你說我變了,但錯誤依然相同。 –

+0

@TrầnKimDự不可能。 –

+0

這裏是我的完整代碼:https://paste.ofcode.org/FhPLywqXz4aY7buBha8DRg,我仍然遇到同樣的錯誤;( –