我一直在尝试用fog和google云平台进行图像上传。然而,我的基本实现是每次尝试通过users#update访问数据库时都会被回滚。我一直试图排除这个问题的失败,任何帮助都是非常感谢的。Rails版本是5.0.1
**我又回到了使用载波的本地存储来尝试调试这个问题,但我仍然遇到同样的回滚问题。我已经更新了文件以反映这一点。
**更新:活动记录模型给出的错误消息是Avatar translation missing: en.errors.messages.mini_magick_processing_error。
Gemfile
...
gem 'carrierwave', '~> 1.0'
gem 'mini_magick'avatar_uploader.rb:
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :display do
process :resize_to_fill => [200, 200]
end
version :thumb do
process :resize_to_fit => [80, 80]
end
endusers_controller.rb
class UsersController < ApplicationController
before_action :authenticate_user!, only: [:edit, :update]
before_action :check_authorization, only: [:edit, :update]
before_action :set_user
def show
end
def edit
end
def update
if @user.update(user_params)
redirect_to @user
else
flash.now[:notice] = "Something went wrong. Please try again."
render :edit
end
end
private
def check_authorization
unless current_user.id == params[:id].to_i
redirect_to root_url
end
end
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:avatar)
end
endmodels/user.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_and_belongs_to_many :meetings
has_many :action_items
has_many :tasks
has_many :comments
mount_uploader :avatar, AvatarUploader
endedit.html.erb
<h1>Edit Profile</h1>
<%= form_for(@user, html: {multipart: true}) do |f| %>
<%= f.file_field :avatar %>
<%= f.submit "Save Change" %>
<% end %>

发布于 2017-03-14 21:58:17
我的Imagemagick安装有问题。我重新安装,问题解决了。
发布于 2017-03-14 18:01:58
请在您的AvatarUploader中包括以下行并重新启动服务器
def extension_white_list
%w(jpg jpeg gif png)
end我引用来自edudepetris的以下edudepetris
https://stackoverflow.com/questions/42777916
复制相似问题