在Rails 3中使用ActiveRecord建模Facebook用戶的最佳方式是什麼?由於id字段是自動創建的,我怎樣才能擺脫這個auto_increment,並用每個用戶的fb_id來填充它?我還需要從int中更改該類型,以便它可以存儲Facebook所需的較大值。Rails 3 Facebook用戶模型?
有沒有人有這樣做的事實上的方法?我想這應該是一個相當普遍的實現?
在Rails 3中使用ActiveRecord建模Facebook用戶的最佳方式是什麼?由於id字段是自動創建的,我怎樣才能擺脫這個auto_increment,並用每個用戶的fb_id來填充它?我還需要從int中更改該類型,以便它可以存儲Facebook所需的較大值。Rails 3 Facebook用戶模型?
有沒有人有這樣做的事實上的方法?我想這應該是一個相當普遍的實現?
您可以覆蓋默認的主字段(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
我會建議保持具有的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作爲字符串存儲。
剛剛用固定代碼更新了我的答案。 – Agis