2013-02-15 71 views
4

我需要在某些驗證功能後安裝圖片上傳器。條件下的導軌載波安裝

但是,如果我在模型調用像往常一樣安裝者:

mount_uploader :content, ContentUploader 

carrierwave先下載內容,然後Rails的啓動模式的驗證。

具體來說,我根本不想加載大文件!我想檢查http標頭Content-lengthContent-type,然後,如果沒問題,請掛載上傳器。

也許這樣的事情:

if condition 
    mount_uploader :content, ContentUploader 
end 

我該怎麼辦呢?

P.S. Rails版本3.2.12

回答

1

如果你只是想避免加載大文件,這是不是要走的路!也就是說,可以有條件掛載覆蓋content=

由於CarrierWave v1.1.0仍然沒有條件裝載。但是請注意mount_uploader首先在includes a module的類中,然後overrides原來的content=在所包含的模塊中調用方法content=defined。所以,一個解決辦法就是重新定義存取你叫mount_uploader後:

class YourModel < ActiveRecord::Base 
    mount_uploader :content, ContentUploader 

    def content=(arg) 
     if condition 
      super 
     else 
      # original behavior 
      write_attribute(:content, arg) 
     end 
    end 

    def content 
     # some logic here 
    end 
end