У меня есть таблица, определенная следующим образом:

def self.up
 create_table "equipes", :primary_key => "equipe_id", :force => true do |t|
  t.string   "equipe_nom",                   :limit => 30,   :null => false
  t.string   "equipe_nom_pseudo",    :limit => 8,    :null => false
  t.string   "equipe_manager",       :limit => 40
  t.string   "equipe_telephone_1",   :limit => 22
  t.string   "equipe_adresse_email", :limit => 50
  t.string   "equipe_responsable",   :limit => 50

  t.timestamps
end

Я хочу изменить лимит поля equipe_nom с 30 до 150.

Как лучше всего это сделать?

Могу ли я использовать RAKE G MIGRATION .... ??

Благодарность

1
Marc 10 Янв 2013 в 01:11

1 ответ

Лучший ответ

Прежде всего: не путайте команду rake с командой rails. Rake - это команда, которая будет запускать задачи немного более сложные, чем команда make. rails - это команда, предоставляемая фреймворком rails, например, для создания приложения, генерации миграций и т. Д. Вы получите список всех команд rails и их действия, просто набрав rails в терминале без параметров. rails g migration migrationname сгенерирует для вас миграцию. Дополнительные сведения о миграции см. в этом руководстве по рельсам.

После этого есть две возможности решить вашу проблему:

  • Если вы уже запускали эту миграцию раньше и это была ваша последняя миграция, вам нужно будет запустить rake db:rollback, затем изменить значение в файле миграции, которое вы показали выше, сохранить его, а затем запустить rake db:migrate опять таки. Это сначала отменит последнюю миграцию (в этом случае отбросит таблицу «equipes»), а затем снова запустит ее с вашими изменениями.
  • Если это более старая миграция, вы можете создать новую, выполнив rails g migration change_equipe_nom_to_limit_150. Посмотрите на созданный им файл. Внутри def up напишите: change_column :equipes, :equipe_nom, :string, :limit => 150. Сохраните файл, запустите rake db:migrate

Если вы не уверены, какой вариант подходит, просто сделайте второй. Это всегда будет работать.

2
Dennis Hackethal 10 Янв 2013 в 20:41
Большое спасибо за ваш ответ, Чарльз. Я сделал ошибку внимания между рельсами и граблями, но я понимаю каждую из них. Я проверил ваше последнее решение, и все работает нормально. К сожалению, в руководстве по миграции rails не приводятся примеры такого рода миграции.
 – 
Marc
10 Янв 2013 в 19:02