【问题标题】:Rails reference a model with a non integer primary keyRails 引用具有非整数主键的模型
【发布时间】:2014-09-03 14:39:34
【问题描述】:

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

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?

提前谢谢你

【问题讨论】:

  • 使用:id =&gt; false 不生成client_id 列。

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


【解决方案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);"

然后在你的 Client 模型中设置 do set_primary_key :name

【讨论】:

  • 他已经按照自己的方式设置了主键,他只想用那个主键作为参考。这不是回答问题
猜你喜欢
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 2014-06-20
  • 2018-06-02
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 2012-11-24
相关资源
最近更新 更多