ruby-on-rails - Rails中的set_primary_key错误

标签 ruby-on-rails primary-key

我正在创建一个名为Index的表。这是迁移:

class CreateIndices < ActiveRecord::Migration
  def change
    create_table :indices, {:id => false} do |t|
      t.string :name
      t.float :returns, array: true, default: []
      t.float :navs, array: true, default: []
      t.float :sharpe

      t.timestamps
    end

    execute "ALTER TABLE indices ADD PRIMARY KEY (name);"
  end
end

一切正常。我在另一个“堆栈溢出”问题中看到,我必须在模型中包括set_primary_key命令才能使其正常工作,因此在index.rb中包含以下内容
class Index < ActiveRecord::Base
  set_primary_key :name

end

除了这两个文件,我没有对默认的Rails脚手架进行任何更改(该应用程序是使用Postgres作为默认数据库创建的)。当我转到localhost:3000/indices时,出现以下错误
undefined method `set_primary_key' for #<Class:0x37132e0>

如果我注释掉set_primary_key行,它将加载常规的空支架,但是我认为这没有给我想要的主键功能。我究竟做错了什么?

最佳答案

如果您使用的是Rails 3.2或更高版本,则不建议使用set_primary_key方法,请查看Rails 3.2 release notes-第8.1节,它建议使用赋值方法,而不是self.primary_key=,就像您在评论中所说的那样。

关于ruby-on-rails - Rails中的set_primary_key错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20386636/

相关文章:

PostgreSQL:主键

ef-code-first - Entity Framework 代码优先迁移 : Set Primary Key Value

ruby-on-rails - 为什么使用 nginx 作为代理时 Rails 中间件开销这么高?

ruby-on-rails - 在 Dockerized 应用程序上安装 Ruby Gem

c# - Entity Framework 代码优先主键约束名称

mysql - 更新 MySQL 中的唯一键或主键

java - JPA 何时设置 @GeneratedValue @Id

ruby-on-rails - 未定义的方法 `fog_host='

ruby-on-rails - iframe 的不同布局

ruby-on-rails - Turbolinks和特定于 Controller 的 Assets