2012-05-12 54 views
0

在Rails 3中使用ActiveRecord建模Facebook用戶的最佳方式是什麼?由於id字段是自動創建的,我怎樣才能擺脫這個auto_increment,並用每個用戶的fb_id來填充它?我還需要從int中更改該類型,以便它可以存儲Facebook所需的較大值。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 

編輯:但是,你真的需要擺脫的id領域?有可能你需要一些時間。此外,你應該考慮使用OmniAuth如果你正在尋找第三方身份驗證解決方案(如Facebook):https://github.com/intridea/omniauth

+0

剛剛用固定代碼更新了我的答案。 – Agis

1

我會建議保持具有的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作爲字符串存儲。