2015-07-13 14 views
8

Mam ten błąd: Errno::ENOENT in PicturethingsController#update_profile.Powielanie aktywnych rekordów szyn i zapisanie niepowodzenia

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

Próbuję odtworzyć zapis standardpicture i zbawić to, aby @ character.profilepicture. Nie mogę też pobrać @ character.profilepicture, aby zapisać do bazy danych (wiem od sprawdzenia po wejściu do konsoli rails).

tu jest sposób wykraczająca:

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

Spróbuj usunąć '@ character.profilepicture.save!' Po '@ character.build_profilepicture'. – Pavan

+1

Obawiam się, że nadal mam ten sam błąd. – Bazley

Odpowiedz

6
@character.profilepicture = standardpicture.dup 

Problem z tym jest to, że kopiowanie tylko atrybuty obiektu ActiveRecord, ale nie będzie kopiować rzeczywisty obraz na dysku, więc kiedy potem zrobić

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

zgłasza błąd No such file or directory. Spróbuj użyć this gem, aby pomóc Ci skopiować załączniki CarrierWave pomiędzy rekordami AR.

+1

Zgadzam się z użytkownikiem carrierwave, ale tutaj znajduje się link ruby-toolboksa do [uploadu plików rails] (https://www.ruby-toolbox.com/categories/rails_file_uploads) – daslicious

Powiązane problemy