我有一个表,其迁移是这样的:
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吗?
提前谢谢
答案 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