0

アプリケーションにサインアップしたばかりのユーザーから、Facebook または Twitter の既存の画像を A​​mazon s3 にアップロードしようとしていますが、一部の検証ではユーザー オブジェクトを保存できませんImage is invalid.。しかし、私はそれを削除しましたが、それは言い続けていますImage is invalid.

  • これはエラーではありません。画像の URL 文字列が正しい場合でも、carrierwave の検証からの単なるメッセージだと思います。

アバターアップローダ

# encoding: utf-8

class AvatarUploader < CarrierWave::Uploader::Base

  include CarrierWaveDirect::Uploader

  include CarrierWave::RMagick

  # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  include CarrierWave::MimeTypes
  process :set_content_type

  def store_dir
    "avatar/#{model.id}"
  end

  version :thumb do
    process resize_to_fill: [50, 50]
  end

  # def extension_white_list
  #   %w(jpg jpeg gif png bmp)
  # end
end

ユーザーの作成:

...
    new_user = User.create( :name => auth['info']['name'], 
                     :email => User.email_from_auth(auth) )
    auth_image_url = Authentication.larger_image(auth) # a string of user image url from social network authentication data. ie: http://a0.twimg.com/profile_images/1255111511/skyline.jpg
    unless auth_image_url.blank?
      new_user.remote_image_url = auth_image_url
      new_user.save
    end
...
4

1 に答える 1

2

修理済み!エラーは Carrierwave とは関係ありません。画像がアップロードされた瞬間にオブジェクトがデータベースに存在しないという事実だけです。最初に新しいユーザーを保存してから:

after_create :upload_image_from_auth

def upload_image_from_auth
  auth = self.authentications.first
  unless auth.nil?
    self.remote_image_url = auth.larger_image
    self.save
  end   
end
于 2012-12-06T02:58:14.897 に答える