首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CarrierWave事务回滚

CarrierWave事务回滚
EN

Stack Overflow用户
提问于 2017-03-14 04:46:11
回答 2查看 964关注 0票数 0

我一直在尝试用fog和google云平台进行图像上传。然而,我的基本实现是每次尝试通过users#update访问数据库时都会被回滚。我一直试图排除这个问题的失败,任何帮助都是非常感谢的。Rails版本是5.0.1

**我又回到了使用载波的本地存储来尝试调试这个问题,但我仍然遇到同样的回滚问题。我已经更新了文件以反映这一点。

**更新:活动记录模型给出的错误消息是Avatar translation missing: en.errors.messages.mini_magick_processing_error

Gemfile

代码语言:javascript
运行
复制
...
gem 'carrierwave', '~> 1.0'
gem 'mini_magick'

avatar_uploader.rb:

代码语言:javascript
运行
复制
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

end

users_controller.rb

代码语言:javascript
运行
复制
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

end

models/user.rb

代码语言:javascript
运行
复制
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

end

edit.html.erb

代码语言:javascript
运行
复制
<h1>Edit Profile</h1>

<%= form_for(@user, html: {multipart: true}) do |f| %>

  <%= f.file_field :avatar %>

  <%= f.submit "Save Change" %>

<% end %>

EN

回答 2

Stack Overflow用户

发布于 2017-03-14 21:58:17

我的Imagemagick安装有问题。我重新安装,问题解决了。

票数 2
EN

Stack Overflow用户

发布于 2017-03-14 18:01:58

请在您的AvatarUploader中包括以下行并重新启动服务器

代码语言:javascript
运行
复制
def extension_white_list
  %w(jpg jpeg gif png)
end

我引用来自edudepetris的以下edudepetris

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42777916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档