Как указать порядок добавления полей с помощью миграции в Rails 3? - PullRequest
0 голосов
/ 01 декабря 2011

Как мне указать, после какого поля я хочу добавить новый столбец? (я не хочу, чтобы поле добавлялось внизу после отметок времени)

add_column :users, :is_active, :boolean

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

В общем, вы не можете, и вам все равно.Таблицы в реляционных базах данных на самом деле не имеют определенного порядка;Вот почему вы всегда должны указывать столбцы, когда вставляете, и никогда не говорите что-то вроде select * ... (да, ActiveRecord делает это, но это не значит, что это хорошая идея, просто потому что AR прыгает со скалы,это означает, что вы должны и т. д.).

Если вы настаиваете на попытке выполнить для нее работу базы данных, то переносимый способ:

  1. Скопируйте или переименуйте таблицу в другую таблицу.
  2. Удалите оригинал (если вы не переименовали в (1)).
  3. Создайте новую таблицу со столбцами в нужном вам порядке.
  4. Надеемся, что база данных обратит вниманиеВаш заказ в (3).
  5. Скопируйте данные из таблицы в (1) в "новую" таблицу из (3).
  6. ...
  7. Прибыль.

Если вы используете адаптеры баз данных MySQL или MySQL2, вы можете использовать опцию :after => :some_column до add_column.Если вы используете SQLite или PostgreSQL, то посмотрите способ переноса выше.Если вы используете что-то еще, вам придется прочитать документацию или исходный код адаптера, чтобы узнать, что поддерживается.

Но вы должны спросить себя, почему вы думаете, что хотите это сделать, прежде чем продолжить.

1 голос
/ 01 декабря 2011

Вот как:

add_column :users, :is_active, :boolean, :after => :some_column

где: some_column - имя столбца, который вы хотите добавить: is_active после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...