2011-02-06 4 views
0

私は現在、gmail openIDを使って認証するためにdeviseとomniauthを使用するアプリケーションを持っています。今、私は各ユーザーに一意のユーザーIDを割り当てたいと思います。だから彼らはまだ彼らのGmail資格情報を使ってログインしますが、今は彼らが参照するユーザーIDを持っています。は、deviseとomniauthを使用してレール3にuseridフィールドを持っています

スキーマに追加するにはどうすればよいですか?

答えて

0

ユーザー・テーブルを作成したときに、移行スクリプトによってデフォルトでID列が作成されているはずです。この列の値は一意である必要がありますので、すべてのユーザーの一意のIDとして使用できます。それがあなたのニーズを満たしていない場合は、データベースに別の列を追加してから、OmniauthCallbacksControllerのデータベースに存在しないユーザーを作成するときにそのフィールドを一意の識別子に設定するだけです。 のfacebookの例では、OmniauthCallbacksControllerから呼び出されるfind_for_facebook_oauthメソッドを変更して、ユーザーの作成時に新しいフィールドを作成することができます。

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil) 
    data = access_token['extra']['user_hash'] 
    if user = User.find_by_email(data["email"]) 
    user 
    else # Create an user with a stub password. 
    # Add code here to create unique identifier for the user 
    # and make sure your field is passed to the create! method 
    User.create!(:email => data["email"], :password => Devise.friendly_token[0,20]) 
    end 
end 
関連する問題