私は現在、gmail openIDを使って認証するためにdeviseとomniauthを使用するアプリケーションを持っています。今、私は各ユーザーに一意のユーザーIDを割り当てたいと思います。だから彼らはまだ彼らのGmail資格情報を使ってログインしますが、今は彼らが参照するユーザーIDを持っています。は、deviseとomniauthを使用してレール3にuseridフィールドを持っています
スキーマに追加するにはどうすればよいですか?
私は現在、gmail openIDを使って認証するためにdeviseとomniauthを使用するアプリケーションを持っています。今、私は各ユーザーに一意のユーザーIDを割り当てたいと思います。だから彼らはまだ彼らのGmail資格情報を使ってログインしますが、今は彼らが参照するユーザーIDを持っています。は、deviseとomniauthを使用してレール3にuseridフィールドを持っています
スキーマに追加するにはどうすればよいですか?
ユーザー・テーブルを作成したときに、移行スクリプトによってデフォルトで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