Ответ 1
Вы можете вручную добавить столбец id:
add_column :table_name, :id, :primary_key
или очистите (или сохраните) свои данные, откат к этой миграции, избавитесь от опции :id => false
и переименуйте.
У меня есть приложение Rails, в котором одна из моделей не имеет столбца id
. Проведя некоторые исследования, я нашел миграцию, которая ее создала:
create_table(:the_model, :id => false) do |t|
# columns
end
Теперь, при новой миграции, я хочу добавить столбец id
стандартным способом Rails (не используя SQL-код, специфичный для базы данных). Как я могу это сделать?
Я уже пробовал это без успеха:
change_table(:the_model, :id => true) do |t|
end
Вы можете вручную добавить столбец id:
add_column :table_name, :id, :primary_key
или очистите (или сохраните) свои данные, откат к этой миграции, избавитесь от опции :id => false
и переименуйте.
Вы уже получили свой ответ, но вот один лайнер, который делает все в этом случае
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
.
Вам не нужно указывать :integer
rails g migration add_id_to_model id:primary_key
работал у меня.