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

Ruby on rails CarrierWave:不保存图像(仅tmp),ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,carrierwave,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Carrierwave,我对CarrierWave有意见。不会保存数据库中的图像和路径,但会保存tmp文件 这是我的阿凡达阅读器(apps/uploaders/avatar_uploader.rb): 编码:utf-8 类AvatarUploader[200300] # #def刻度(宽度、高度) #做点什么 #结束 #创建上载文件的不同版本: #版本:thumb do #过程:比例=>[50,50] #结束 #添加允许上载的扩展的白名单。 #对于图像,您可以使用以下内容: def扩展白名单 %w(jpg jpeg g

我对CarrierWave有意见。不会保存数据库中的图像和路径,但会保存tmp文件

这是我的阿凡达阅读器(apps/uploaders/avatar_uploader.rb):

编码:utf-8 类AvatarUploader[200300] # #def刻度(宽度、高度) #做点什么 #结束 #创建上载文件的不同版本: #版本:thumb do #过程:比例=>[50,50] #结束 #添加允许上载的扩展的白名单。 #对于图像,您可以使用以下内容: def扩展白名单 %w(jpg jpeg gif png) 结束 #覆盖上载文件的文件名: #避免在此处使用model.id或version\u名称,有关详细信息,请参阅uploader/store.rb。 #def文件名 #“something.jpg”如果是原始文件名 #结束 结束 以下是会员模式(apps/models/Member.rb):

类成员

有什么想法吗?

我用
为会员型号设置了\u安全\u密码。在编辑表单中,我忘记添加密码和密码确认来验证用户


愚蠢的错误。

One CW的ActiveRecord支持已经安装,并且您已经添加了
avatar
string列,您仍然需要使用文件的缓存版本保存您的成员。请参阅的ActiveRecord部分。只是一个猜测,因为我在你发布的代码中没有看到你这样做的地方。我不知道如何修复它:(试着浏览与我上面提供的GitHub链接相关联的自述文件中显示的步骤(向下滚动)。需要很多小的设置步骤。我强烈建议CarrierWave阅读代码以了解它在做什么;这是一个功能强大的gem,可以做很多工作。如果您需要更多帮助,请编辑您的帖子以包含最终保存
成员
记录的控制器代码;这是ca文件的ched版本被写入存储,数据库被更新为名称,其他大部分魔法都发生了。感谢帮助,但我刚刚创建了新项目,复制了控制器、模型、视图,一切正常!谢谢!
# 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
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