Ruby on rails 如何覆盖RubyonRails 4.0中的默认主键列;?

Ruby on rails 如何覆盖RubyonRails 4.0中的默认主键列;?,ruby-on-rails,overriding,primary-key,rails-models,Ruby On Rails,Overriding,Primary Key,Rails Models,我有一个已经存在的数据库模式,其中表的主键是字符串列,还有一些表的主键是多列。我想在rails中映射这个模式,但我不知道如何覆盖默认主键(rails框架创建的列id) 您可以像这样覆盖主键 class Book < ActiveRecord::Base self.primary_key = 'author' end classbook

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

您可以像这样覆盖主键

class Book < ActiveRecord::Base
  self.primary_key = 'author'
end
classbook
我不知道你想做什么。在Rails中更改主键是一个错误

但对于这一点,请尝试在您的迁移中这样做

class Foos < ActiveRecord::Migration  
    def self.up  
        create_table :foos, :id => false do |t|  
          t.string :my_id
          t.timestamps
        end
    end
end
class-Foosfalse do | t |
t、 string:my_id
t、 时间戳
结束
结束
结束

我在书中读到过这种方法,它说它只覆盖列名,例如rails中priamry键的默认列名是id,现在是它的作者,但数据类型仍然是整数。我的模式中有一个字符串作为主键,因此这并不能解决我的问题。为什么你应该试着让自己远离它