2017-12-26 4 views
0

레일 5와 함께 Carrierwave를 사용합니다. 일부 인스턴스에 여러 이미지를 업로드해야합니다. 그러나 유효성 검사가 실패하면 모든 이미지가 손실됩니다. 업로드 된 파일을 캐싱하기 위해 image_cache을 찾았지만 단일 파일 업로드에서만 작동합니다.반송파 캐시 여러 파일

여러 파일 업로드를 위해 여러 파일을 캐시 웨이브 방식으로 저장합니다.

감사합니다.

답변

0

, 레일 5.1.4에 대한 Carrierwave 1.2.1

해결 내가보기에 attr_accesor :images

하지 않고 그것을했다 :

컨트롤러
= f.file_field :images, multiple: true 
= f.hidden_field :images_cache 

:

def create 
    @instance = Model.new(permited_parameters) 
    add_images 
    .......... 
    @instance.save 
end 

private 

def permited_parameters 
    params.require(:model_name).permit(..., ..., :images_cache) 
end 

def add_images 
    new_images = params.dig(:model_name, :images) || 
       params.dig(:model_name, :images).presence && 
       JSON.parse(params.dig(:model_name, :images)) 
    if new_images 
    images = @instance.images 
    images += new_images 
    @instance.images = images 
    end 
end 

문제 캐시 된 데이터 형식입니다. 캐시 된 데이터의 위치는 [Array] as JSON

입니다.