ユーザーセッションにFacebookのデータを維持することはできません私はここに、私のRailsアプリケーションでomniauth工夫使用していますUserクラスはRailsはomniauth考案:
あるclass User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
attr_accessible :email, :password, :password_confirmation, :remember_me, :encrypted_password, :fb_id
def set_facebook_info(info)
@facebook_info = info
end
def get_facebook_info
@facebook_info
end
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.find_by_email(data.email)
if not user.fb_id
user.fb_id = access_token.uid
user.save
end
user.set_facebook_info "whatever" <-- I tried here
user
else # Create a user with a stub password.
user = User.create(:email => data.email, :password => Devise.friendly_token[0,20], :fb_id => access_token.uid)
user
end
end
def self.new_with_session(params, session)
super.tap do |user|
user.set_facebook_info "whatever" # <-- I Tried here too
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["user_hash"]
user.email = data["email"]
end
end
end
end
私はいくつかのFacebookのユーザー情報を保持するための設定および取得メソッドを使用したいです。ビューでcurrent_userを使用すると、Userクラスで設定した値は表示されません。 application.html.erbのよう :
<span><%= current_user.get_facebook_info %></span>
が空値
を返し誰もがそれについての考えを持っていますか?それは一般的なケースでなければなりません。一般的に、DBに接続されていない属性を、devise経由でcurrent_userにどのように割り当てることができますか?
おかげ