1

У меня проблема с CarrierWave. Изображения и путь в базе данных не сохраняются, но файлы tmp.CarrierWave: не сохранение изображения (только tmp)

Вот мой AvatarUploader (приложения/закачивающие/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.rb):

class Member < ActiveRecord::Base 

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

    mount_uploader :avatar, AvatarUploader 

    email_regex = /\A[\w+\-.][email protected][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 

Любые идеи?

+0

Установлена ​​поддержка одного CW ActiveRecord, и вы добавили колонку строки 'avatar', вам все равно нужно сохранить ваш член с кешированной версией файла. См. Раздел ActiveRecord https://github.com/jnicklas/carrierwave. Просто догадаться, так как я не вижу нигде в вашем опубликованном коде, что вы это делаете. В противном случае, это выглядит хорошо для меня. –

+0

Я не знаю, как это исправить :( – rgtk

+0

Попробуйте пройти шаги, показанные в ReadMe, связанные с ссылкой GitHub, приведенной выше (прокрутка вниз). Требуется множество небольших шагов настройки. настоятельно рекомендуем с CarrierWave прочитать код, чтобы узнать, что он делает, это мощный камень, который много работает. Если вам нужна дополнительная помощь, отредактируйте сообщение, чтобы включить код контроллера, который в конечном итоге сохраняет запись 'Member' , это точка, в которой кэшированная версия файла записывается в хранилище, база данных обновляется с именем, а большая часть другой магии происходит. –

ответ

2

Я использовал has_secure_password для модели-члена. В форме редактирования я забыл добавить пароль и пароль_подтверждение для аутентификации пользователя.

Глупая ошибка.

Смежные вопросы