Ruby on Rails Неправильные имена первичных ключей - PullRequest
1 голос
/ 17 октября 2010

Я использую 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, приложение ищет четный ключ в качестве первичного ключа, а не идентификатора.Как я могу изменить свою задачу переноса, чтобы она автоматически помещала четные данные в базу данных в качестве первичного ключа?

1 Ответ

1 голос
/ 12 января 2011

Похоже, вы пытаетесь переопределить имя первичного ключа по умолчанию 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.Модели НЕ автоматически определяют первичный ключ по определению таблицы.

...