Ruby on Rails不正确的主键名称

时间:2010-10-17 10:50:11

标签: mysql ruby aptana radrails

我正在使用RadRails来创建我的MYSQL数据库表。这是迁移任务:

class CreateEvents < ActiveRecord::Migration
  def self.up
    create_table :events do |t|
      t.string :eventname
      t.string :evententryurl
      t.string :eventurl

      t.timestamps
    end
  end

  def self.down
    drop_table :events
  end
end

然后我运行db:migrate Rake任务。这将在数​​据库表中创建以下字段:

id
eventname
evententryurl
eventurl

好的,到目前为止。我遇到的问题是当我运行应用程序并转到http://localhost/events/new时,应用程序正在寻找eventid,因为它是主键,而不是id。如何更改我的迁移任务,以便它自动将eventid作为主键放入数据库?

1 个答案:

答案 0 :(得分:1)

听起来您正尝试使用id覆盖迁移中的默认主键名eventid。我假设应用程序正在寻找eventid而不是id,因为您在模型中使用了set_primary_key :eventid

以下是您的需求:

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-create_table

  

:primary_key主要名称   键,如果要添加   自动。默认为id。如果:id   如果为false,则忽略此选项。

     

另请注意,这只是设置了   表中的主键。您   另外需要配置   通过模型中的主键   set_primary_key宏。模型没有   从他们的自动检测主键   表定义。