Rails 3でActiveRecordを使用してFacebookユーザーをモデル化する最良の方法は何ですか? id フィールドは自動的に作成されるため、このフィールドの auto_increment を取り除き、各ユーザーの fb_id を入力するにはどうすればよいですか? また、Facebook が必要とするより大きな値を格納できるように、型を int から変更する必要があります。
誰もこれを行うための事実上の方法を持っていますか? これはかなり一般的な実装に違いないと思いますか?
Rails 3でActiveRecordを使用してFacebookユーザーをモデル化する最良の方法は何ですか? id フィールドは自動的に作成されるため、このフィールドの auto_increment を取り除き、各ユーザーの fb_id を入力するにはどうすればよいですか? また、Facebook が必要とするより大きな値を格納できるように、型を int から変更する必要があります。
誰もこれを行うための事実上の方法を持っていますか? これはかなり一般的な実装に違いないと思いますか?
次のように、デフォルトのプライマリフィールド(id)をオーバーライドできます。
class CreateUsers < ActiveRecord::Migration
def change
create_table :users, :primary_key => 'facebook_id' do |t|
t.string :name
t.timestamps
end
end
end
次に、モデルで:
class User < ActiveRecord::Base
self.primary_key = "facebook_id"
end
編集:しかし、あなたは本当にidフィールドを取り除く必要がありますか?たぶん、あなたはそれをいつか必要とするでしょう。また、サードパーティの認証ソリューション(Facebookなど)を探している場合は、OmniAuthの使用を検討する必要があります:https ://github.com/intridea/omniauth
Rails が提供するデフォルト ID を保持し、以下を追加することをお勧めします。
class AddUIDandProviderandTokenToUsers < ActiveRecord::Migration
def up
add_column :users, :UID, :string
add_column :users, :provider, :string
add_column :users, :token, :string
end
def down
#
end
end
これにより、Facebook だけに頼るのではなく、ユーザー テーブルに他の外部認証システムを追加できるようになります。
UIDを文字列として保存することを忘れないでください。