2012-04-13 6 views
0

を "作成" 所有について叫んfind_or_create_by_provider_and_uidここでのエピソードをrailscasts:はActiveRecordのは、私はこれでTwitter/FacebookのOAuthのログインを実装しています

http://railscasts.com/episodes/235-omniauth-part-1

私はgithubのでOmniauth READMEからのコードを使用しています:

def oauthing 
    auth = request.env['omniauth.auth'] 
    current_user.authentications.find_or_create_by_provider_and_uid(auth['provider'], auth['uid']) 
    flash[:notice] = "Authentication Successful" 
    redirect_to '/' 
    end 

そして、ActiveRecordに属するメソッド「作成」についてはエラーが発生します。今、私は "_or_create"を削除すれば上のコードを稼働させることができますが、今はのユーザーであるのユーザーを認証するのにTwitter/FacebookのOAuthしか使えず、新しいものを作成することはできません。

私は狂ったように周りをグーグルで回ったが、成功しなかった。 Omniauth経由で認証する代わりにアカウントを作成できるように、この作業をどのように行うことができますか?

答えて

0

分割クエリとは、試してみてください。

is_user = current_user.authentications.find_by_provider_and_uid(auth['provider'], auth['uid']) 

current_user.authentications.create(:provider => auth['provider'], :uid => auth['uid']) if is_user.nil? 
+0

いや、まだ{ を作成するのActiveRecord :: DangerousAttributeError AuthenticationControllerに#oauthingはActiveRecordので定義される}取得 – mitchmonsen

関連する問題