0

在 Rails 3 中使用 ActiveRecord 为 Facebook 用户建模的最佳方法是什么?由于 id 字段是自动创建的,我怎样才能摆脱它的 auto_increment 并用每个用户的 fb_id 填充它?我还需要将类型从 int 更改为可以存储 Facebook 所需的更大值。

有没有人有这样做的事实上的方法?我想这一定是一个很常见的实现?

4

2 回答 2

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 字段吗?您可能需要一些时间。此外,如果您正在寻找 3rd 方身份验证解决方案(如 Facebook),则应考虑使用 OmniAuth:https ://github.com/intridea/omniauth

于 2012-05-12T15:44:34.253 回答
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存储为字符串。

于 2012-05-12T15:51:18.117 回答