2

Facebookでログインしたり、サインアップしたりできるアプリケーションを開発しています。このため、Facebookの画像またはアップロードの画像になり得る画像がありますが、これをモデルに配置する方法がわかりません。

私のモデル:

class User < ActiveRecord::Base
  attr_accessible :name, :password, :password_confirmation, :big_image, :image, :mini_image

  validates_confirmation_of :password
  validates_presence_of :password, :on => :create, :unless => :from_facebook
  validates_presence_of :name
  validates_uniqueness_of :name   

  unless :from_facebook
    mount_uploader :big_image, ImageUploader
  end


  def from_facebook
    self.provider == "facebook"
  end

  def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.big_image = auth.info.image.gsub("=square","=large")
      user.image = auth.info.image.gsub("=square","=normal")
      user.mini_image = auth.info.image
      user.oauth_token = auth.credentials.token
      user.oauth_expires_at = Time.at(auth.credentials.expires_at)
      user.save!
    end
  end
end

終わり

私が変更したい部分は次のとおりです。

unless :from_facebook
  mount_uploader :big_image, ImageUploader
end

それは機能しないからです。

4

1 に答える 1

1

条件付きでmount_uploaderを呼び出したくありません。

この問題にはいくつかのアプローチがあります。

1)Facebookにサインアップし、その場合はFacebookから画像を動的にフェッチするユーザーに対してbig_imageをnilにすることができます。

2)Facebook画像の大きいバージョンをbig_imageとして保存します。そうすれば、必要なすべてのバージョンサイズが得られ、ユーザーが後でそれを上書きできるようにすることもできます。

于 2013-03-01T01:19:31.307 に答える