ruby-on-rails - CarrierWave:不保存图像(仅 tmp)

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 carrierwave

我在使用 CarrierWave 时遇到问题。数据库中的图像和路径不会保存,但 tmp 文件会保存。

这是我的 AvatarUploader (apps/uploaders/avatar_uploader.rb):

# encoding: utf-8

class AvatarUploader < CarrierWave::Uploader::Base

# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick

# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog

# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
#   "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end

# Process files as they are uploaded:
# process :scale => [200, 300]
#
# def scale(width, height)
#   # do something
# end

# Create different versions of your uploaded files:
# version :thumb do
#   process :scale => [50, 50]
# end

# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_white_list
  %w(jpg jpeg gif png)
end

# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
#   "something.jpg" if original_filename
# end

end

这是成员(member)模型 (apps/models/member.rb):

class Member < ActiveRecord::Base

    attr_accessible :name, :email, :password, :password_confirmation, :avatar

    mount_uploader :avatar, AvatarUploader

    email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

    validates :name, presence: true,
                                     uniqueness: true,
                                     length: { within: 4..32 }
    validates :email, presence: true,
                                        uniqueness: true,
                                        format: { with: email_regex }
    validates :password, presence: true,
                                             length: { minimum: 6 }

    has_secure_password

    before_create :generate_token

    private

        def generate_token
            begin
                self.auth_token = SecureRandom.hex(16)
            end while Member.exists?(auth_token: self.auth_token)
        end

end

有什么想法吗?

最佳答案

我使用 has_secure_password 作为成员(member)模型。在编辑表单中,我忘记添加密码和password_confirmation来验证用户身份。

愚蠢的错误。

关于ruby-on-rails - CarrierWave:不保存图像(仅 tmp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760545/

相关文章:

ruby-on-rails - Rails - 如何存储项目的每次更新

javascript - 在 Ajax 中从另一个页面选择数据

ruby-on-rails - 使用错误版本的 Ruby 部署 capistrano

ruby-on-rails - Rails 使用 post 而不是 put 生成更新表单

ruby-on-rails - rails 翻译丢失错误

ruby-on-rails-3 - Rails3中的Ajax回调

ruby - 巨大的 json 对象要出类拔萃?

ruby-on-rails - 如何计算下一次出现时间 04 :00 am EST?

ruby-on-rails - 将字体添加到 Assets 管道

javascript - 将多个 rails 变量传递给 javascript