在 Rails 3 中使用 ActiveRecord 为 Facebook 用户建模的最佳方法是什么?由于 id 字段是自动创建的,我怎样才能摆脱它的 auto_increment 并用每个用户的 fb_id 填充它?我还需要将类型从 int 更改为可以存储 Facebook 所需的更大值。
有没有人有这样做的事实上的方法?我想这一定是一个很常见的实现?
在 Rails 3 中使用 ActiveRecord 为 Facebook 用户建模的最佳方法是什么?由于 id 字段是自动创建的,我怎样才能摆脱它的 auto_increment 并用每个用户的 fb_id 填充它?我还需要将类型从 int 更改为可以存储 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 字段吗?您可能需要一些时间。此外,如果您正在寻找 3rd 方身份验证解决方案(如 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存储为字符串。