Подтвердить что ты не робот

Добавить столбец идентификатора в миграции

У меня есть приложение Rails, в котором одна из моделей не имеет столбца id. Проведя некоторые исследования, я нашел миграцию, которая ее создала:

create_table(:the_model, :id => false) do |t|
  # columns
end

Теперь, при новой миграции, я хочу добавить столбец id стандартным способом Rails (не используя SQL-код, специфичный для базы данных). Как я могу это сделать?

Я уже пробовал это без успеха:

change_table(:the_model, :id => true) do |t|
end
4b9b3361

Ответ 1

Вы можете вручную добавить столбец id:

add_column :table_name, :id, :primary_key

или очистите (или сохраните) свои данные, откат к этой миграции, избавитесь от опции :id => false и переименуйте.

Ответ 2

Вы уже получили свой ответ, но вот один лайнер, который делает все в этом случае

rails generate migration AddIdToModel id:integer

Посмотрите на синтаксис имени файла миграции Add ColumnName Кому TableName следуйте за описанием столбца. Он будет генерировать что-то вроде ниже

class AddIdToModel < ActiveRecord::Migration
  def change
    add_column :models, :id, :integer
  end
end

Теперь вы можете изменить эту строку, если вы чувствуете что-то еще. и просто запустите rake db:migrate.

Ответ 3

Вам не нужно указывать :integer

rails g migration add_id_to_model id:primary_key работал у меня.