我已经在我的模型中实现了“多文件上传”,就像CarrierWave的文档中所解释的那样,它的工作正常。我的问题是我无法让模型更新起作用。当我尝试添加新文件时,它会删除旧文件。我想保留两者。这是我的模型和控制器的一部分:
class Album < ActiveRecord::Base
mount_uploaders :photos, PhotosUploader
end
class AlbumController < ApplicationController
def create
@album = Album.new(album_params)
if @album.save
flash[:success] = 'Album created'
redirect_to @album
else
render 'new'
end
end
def update
@album = Album.find(params[:id])
if @album.update_attributes(album_params)
flash[:success] = 'Album created'
redirect_to @album
else
render 'edit'
end
end
private
def album_params
params.require(:album).permit({ photos: [] })
end
end
我考虑过将照片放在不同的模型中,但如果我能以这种方式工作则会更好。有什么建议吗?
答案 0 :(得分:2)
我在我的更新方法中有以下内容,以确保CarrierWave上传的现有图像(头像)保持不变。我有一个单独的方法,允许用户单独删除图像。
def update
project_params_holder = project_params
project_params_holder[:avatars] += @project.avatars if project_params_holder[:avatars]
respond_to do |format|
if @project.update(project_params_holder)
format.html { redirect_to @project, notice: 'Project was successfully updated.' }
format.json { render :show, status: :ok, location: @project }
else
format.html { render :edit }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end