如何在Ruby on Rails 4.0.+中覆盖默认的主键列?

3

我已有一个数据库模式,其中的表有一个字符串列作为主键,还有一些用多个列作为键的表。我想在Rails中映射这个模式,但我不知道如何覆盖默认的主键(由Rails框架创建的列id)。

2个回答

3
您可以像这样覆盖主键
class Book < ActiveRecord::Base
  self.primary_key = 'author'
end

我在书中读到了关于这种方法的介绍,它说只覆盖列名,例如Rails中主键的默认列名是id,现在变成了author,但数据类型仍然是整数。然而我的模式中使用的是字符串作为主键,因此这并没有解决我的问题。 - software knife
将Rails中的主键修改为字符串,并且为什么应该尝试避免这样做。 - MilesStanfield

1
我不知道你想做什么。在Rails中修改主键是一个错误。
但是,为此,请尝试在您的迁移中执行此操作。
class Foos < ActiveRecord::Migration  
    def self.up  
        create_table :foos, :id => false do |t|  
          t.string :my_id
          t.timestamps
        end
    end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接