2017-01-16 1 views
0

현재 Carrierwave를 사용하여 이미지를 원격으로 다운로드하고 있습니다. 이것은 잘 작동합니다. 알아 내려고하는 것은 파일 이름을 URL에서 다운로드 한 것 이외의 다른 파일 이름으로 설정하는 방법입니다.Carrierwave remote_image_url을 사용하면 파일 이름을 어떻게 설정할 수 있습니까?

@desk.desk_images.create(
     :file_name_to_use => "testing", 
     :remote_image_url => photo.url(size) 
    ) 

그리고 내 업 로더베이스 :

이 내 레이크 작업에 desk_image_uploader.rb

class DeskImageUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :fog 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb do 
    process resize_to_fill: [200, 150] 
    process :quality => 90 

    def full_filename(for_file = model.logo.file) 
     parts  = for_file.split('.') 
     extension = parts[-1] 
     name  = parts[0...-1].join('.') 
     "#{model.file_name_to_use}_#{version_name}.#{extension}" 
    end 

    end 
end 

desk_image.rb

class DeskImage < ActiveRecord::Base 
    belongs_to :desk 

    mount_uploader :image, DeskImageUploader 

    attr_accessor :file_name_to_use 
end 

이것은 해당 항목을 저장하지 않음 db에 ctly. DeskImage.image는 "테스트"를 통과 한 오버 라이드가 아니라 원본 파일 이름을 저장하고 있습니다 ...

누구나 데이터베이스에있는 Carrierwave 상점을 사용자 정의하고 사용하는 방법을 알고 계십니까?

내가 어떤 교란 요인이없는 우리가 확신 할 수 있는지 확인하기 위해 약간의 코드를 제거했습니다, 당신은

답변

1

좋아요 감사합니다. 첫 번째 단계는 블록에서 filename을 이동하는 것입니다. 시도해 볼 수 있습니까?

class DeskImageUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :fog 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb do 
    process resize_to_fill: [200, 150] 
    process :quality => 90  
    end 

    def filename 
    "test-#{model.id}.#{File.extname(super)}" 
    end 
end 
+0

감사하지만 작동하지 않는 것 같습니다. – AnApprentice

+1

업 로더의 전체 코드와 모델에 탑재 된 업 로더를 공유 할 수 있습니까? – lobati

+0

방금 ​​전체 코드로 업데이트되었습니다 ... 데이터베이스에서 원래 파일 이름을 기록하고 있습니다. S3에서 Orig 파일을 저장했지만 엄지 파일 이름이 다시 표시되어 레일 앱에서 엄지 버전을 찾으십시오. – AnApprentice

관련 문제