2012-05-12 12 views
0

Rails 3でActiveRecordを使用してFacebookユーザーをモデル化する最良の方法は何ですか? idフィールドが自動的に作成されるので、どのようにしてauto_incrementを取り除き、これを各ユーザのfb_idに取り込むことができますか? Facebookで必要とされるより大きな値を格納できるように、型をintから変更する必要もあります。Rails 3 Facebookユーザーモデル?

これを行うデファクト・メソッドを持っている人はいますか?これはかなり一般的な実装でなければならないと思いますか?

答えて

1

あなたはこのようにデフォルトのプライマリフィールド(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 

EDIT:しかし、あなたが本当にIDを取り除くために必要がありますかフィールド?あなたはしばらくそれが必要になるでしょう。 https://github.com/intridea/omniauth

+0

私の答えは固定コードで更新されました。 – Agis

1

私はRailsのが提供するデフォルトのIDを持って、次の項目を追加し続けることをお勧めします::また、あなたは(Facebookのような)サードパーティの認証ソリューションを探しているならOmniAuthを使用することを検討すべきである

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を文字列で保存することを忘れないでください。

関連する問題