2016-04-05 10 views
0
class AvatarUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    # include CarrierWave::RMagick 
    # include CarrierWave::MiniMagick 

    # Choose what kind of storage to use for this uploader: 

    storage :fog 

    # Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    byebug 
    session[:user_email_id] 

    end 

    def get_time 
    @time = Time.now 
    end 

    # Provide a default URL as a default if there hasn't been a file uploaded: 
    # def default_url 
    # # For Rails 3.1+ asset pipeline compatibility: 
    # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 
    # 
    # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    # end 

    # Process files as they are uploaded: 
    # process scale: [200, 300] 
    # 
    # def scale(width, height) 
    # # do something 
    # end 

    # Create different versions of your uploaded files: 
    # version :thumb do 
    # process resize_to_fit: [50, 50] 
    # end 

    # Add a white list of extensions which are allowed to be uploaded. 
    # For images you might use something like this: 
    def extension_whitelist 
    %w(jpg jpeg gif png) 
    end 

    # Override the filename of the uploaded files: 
    # Avoid using model.id or version_name here, see uploader/store.rb for details. 
    # def filename 
    # "something.jpg" if original_filename 
    # end 

end 

In der obigen store_dir-Methode erwartet es, dass eine Zeichenfolge zurückgegeben wird. Also versuche ich die Zeichenfolge als aktuelle Benutzer E-Mail-ID geben. Das ist bereits in einem anderen Controller festgelegt und in anderen Controllern zugänglich. Gibt es irgendetwas, was mir an Trägerwelle fehlt?Sitzungen sind im Trägerwellen-Uploader nicht zugänglich

Auch spree_current_user ist nicht zugänglich in diesem AvatarUploader

Antwort

0

Wenn wir "Session [xx]" in-Controller verwendet, dass da Controller eine Methode namens "Session" hat, die die Sitzung des Benutzers zurückgibt. Ich habe geglaubt, dass weder AvatarUploader noch CarrierWave :: Uploader :: Base diese Session-Methode hat, deshalb kann man in ihnen auch nicht "Session [xxx]" aufrufen.

+0

können Sie bitte eine Lösung vorschlagen, in der ich Sitzungen dort verwenden kann? – gates

+0

Verwenden Sie die "Modell" -Methode, um das gewünschte Ergebnis zu erhalten –

+0

Die Modellvariable zeigt auf das Instanzobjekt, an das der Uploader angeschlossen ist. –