2013-07-15 44 views
1

我有兩種型號(Document & DocumentType)。使用carrierwave我想動態地限制基於它的DocumentType(它包含一個可接受的文件擴展名數組)的Document允許的文件擴展名。問題是extension_white_list似乎在DocumentType與Document關聯之前被調用。想法,想法?Carrierwave dynamic extension_white_list

def create 
    @document = Document.new document_params 
end 

回答

3

在你的上傳器中,你可以做任何你需要的,類,實例方法或固定數據。

def extension_white_list 
    # Document.some_class_method 
    # model.some_instance_method 
    # fixed: %w(jpg jpeg gif png) 
end 

該問題可能源於Rails分配params的方式:您無法控制順序。

在這種情況下,分割線,以得到你想要的順序:

@document = Document.new document_params_without_file 
@document.assign_attributes document_file_params 
#or a mere @document.file_accessor = document_file_params 
+0

感謝本傑明。這節省了我的一天。我想知道這個答案沒有被接受,但沒有人贊成它。 Rails分配params的方式是主要原因。再次感謝。 – Saim