Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails引用具有非整数主键的模型_Ruby On Rails_Activerecord_Rails Migrations - Fatal编程技术网

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

Ruby on rails Rails引用具有非整数主键的模型,ruby-on-rails,activerecord,rails-migrations,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 但是结果表有一个名为client_id的字段,它是i

我有一个表,其迁移如下:

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
但是结果表有一个名为client_id的字段,它是int,我是否应该将任何参数传递给references方法,以便它将字段创建为varchar

提前感谢您

我相信您可以使用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);"
然后在您的客户机模型中设置do set_primary_key:name

我相信您可以使用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);"

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

Use:id=>false不生成Client_id列。Use:id=>false不生成Client_id列。他已经按照他想要的方式设置了主键,他只想将该主键用作引用。这并不是在回答问题,他已经按照自己想要的方式设置了主键,他只想将主键用作参考。这并没有回答问题