2015-07-13 16 views
8

Ho questo errore: Errno::ENOENT in PicturethingsController#update_profile.Rails record duplicazione record e salvataggio errore

No such file or directory - /Users/Baz/rails/myapp/public/uploads/picturething/picture/49/cat.jpg

sto cercando di duplicare il record standardpicture e salvare che a @ character.profilepicture. Non riesco nemmeno a ottenere @ character.profilepicture per salvarlo nel database (lo so dal controllo dopo essere entrato nella console di rails).

Ecco il metodo incriminato:

picturethings_controller.rb:

def update_profile 
    @character = Character.find_by(callsign: params[:callsign]) 
    standardpicture = Picturething.find_by(id: params[:picid]) 
    @character.build_profilepicture 
    @character.profilepicture.save! 
    @character.profilepicture = standardpicture.dup 
    @character.profilepicture.save! 
    @character.profilepicture.picture.recreate_versions! 
    @character.profilepicture.picture = @character.profilepicture.picture.profile 
    respond_to do |format| 
    format.html do 
     redirect_to @character.sociable 
    end 
    format.js 
    end 
end 

character.rb:

has_many :standardpictures, class_name: "Picturething", 
          inverse_of: :character, 
          foreign_key: "character_standard_id", 
          dependent: :destroy 
has_one :profilepicture, class_name: "Picturething", 
          inverse_of: :character, 
          foreign_key: "character_profile_id", 
          dependent: :destroy 

picturething.rb:

mount_uploader :picture, CharacterpicUploader 
+1

Provare a rimuovere '@ character.profilepicture.save!' Dopo '@ character.build_profilepicture'. – Pavan

+1

Purtroppo ho ancora lo stesso errore. – Bazley

risposta

6
@character.profilepicture = standardpicture.dup 

Il problema di questo è che è solo la copia dei attributi dell'oggetto ActiveRecord, ma non sarà copiare l'immagine reale sul disco, così quando si poi fare

@character.profilepicture.picture = @character.profilepicture.picture.profile 

esso genera un errore No such file or directory. Prova a utilizzare this gem per aiutarti a copiare gli allegati CarrierWave tra i record AR.

+1

Sono d'accordo con carrierwave ma ecco il link di ruby-toolbox a [rails file uploads] (https://www.ruby-toolbox.com/categories/rails_file_uploads) – daslicious

Problemi correlati