Rails引用具有非整数主键的模型

时间:2014-09-03 14:39:34

标签: ruby-on-rails activerecord rails-migrations

我有一个表,其迁移是这样的:

class CreateClient < ActiveRecord::Migration
  def change
    create_table :clients, :primary_key => :tag do |t|
      t.string :name
    end
    change_column :clients, :tag, :string, limit: 4
  end
end

所以你可以看到的主键是那个是varchar(4)的标记字段,现在我需要从另一个表中引用该字段。 我尝试在迁移中以这种方式创建引用:

t.references :client, index: true

但结果表有一个名为client_id的字段,它是int,我应该将任何参数传递给references方法,以便它将字段创建为varchar吗?

提前谢谢

1 个答案:

答案 0 :(得分:-1)

我相信你可以使用execute强制rails以你想要的方式设置主键:

class CreateClient < ActiveRecord::Migration
  def change
    create_table :clients, :id => false do |t|
      t.string :name
    end
execute "ALTER TABLE clients ADD PRIMARY KEY (name);"

然后在您的客户端模型中设置set_primary_key :name