2017-05-11 3 views
0

Carrierwaves enter link description here enthält sowohl das Verzeichnis, in das Carrierwave Dateien hochlädt, als auch das Verzeichnis, in dem Carrierwave nach Dateien sucht. Allerdings würde ich gerne wissen, ob es eine Möglichkeit gibt, etwas wie eine read_dir zu definieren, die der Pfad wäre, wo Carrierwave nach Dateien suchte, und die store_dir nur zum Speichern von Dateien belassen würde.Carrierwave + Rails 5: Verzeichnis/Verzeichnis lesen

Ich weiß, dass dies wahrscheinlich nicht viel praktischen Sinn macht, aber ich möchte nur wissen.

Antwort

3

Sie können store_dir basierend auf einer bestimmten Bedingung des Objekts berechnen. Sie können diese Bedingung auch festlegen, wenn Sie ein anderes Verzeichnis benötigen. Zum Beispiel:

class MyModel < ActiveRecord::Base 
    attr_accessible :use_directory_for_storing 

    mount_uploader :file, MyFileUploader 
end 

class MyFileUploader < CarrierWave::Uploader::Base 
    # ... 
    def store_dir 
    if model.use_directory_for_storing 
     "some/directory/for/storing" 
    else 
     "some/directory/for/reading" 
    end 
    end 
end 

# Usage 

object = MyModel.new(params) 
object.use_directory_for_storing = true 

object.save # the file will be stored in ".../some/directory/for/storing/" directory 

object = MyModel.last 
# will look for the file in the ".../some/directory/for/reading/" directory 
object.file.path # => ".../some/directory/for/reading/..." 
Verwandte Themen