2013-11-23 3 views
0

Я новичок в рельсах и создал настраиваемую миграцию для изменения моей структуры базы данных с помощью Rails Generate. Вот команда, которую я выпустил: rails g пользователей миграции.Миграция ActiveRecord не выполняется

Теперь в файле он создал, я занесены:

class Users < ActiveRecord::Migration 
    def change 
    add_column :first_name 
    add_column :last_name 
    remove_column :name 
    end 
end 

Когда я запускаю грабли БД: мигрировать ничего не происходит. Что мне нужно сделать, чтобы исправить это?

+0

Если вы создали файл целиком самостоятельно, я бы предположил, что вы опустили метку времени в начале имени файла. Rails записывает, какие миграции были выполнены в таблице (schema_migrations) в вашей базе данных, и использует эту метку времени для их идентификации. Без этой метки db: migrate просто пропустит миграцию. – AndyV

ответ

2

Это вообще не работает? Трудно сказать, основываясь на информации, которую вы дали. Возможно, вам стоит попробовать перейти с более уникальным именем? Что-то вроде:

rails g migration ConvertUsersNamesToSingleField 

Я не уверен, что было бы здорово иметь две миграции с тем же именем. Но с короткими родовыми именами, такими как Users, может быть проблема здесь. И обычно это не может повредить иметь подробное и описательное название миграции, для потомства и ясности.

этих вопросов согласен, что миграция с не уникальными именами не работает: Rails migrations with the same name


Но даже тогда, когда бежал, это будет вызывать ошибки. Вам нужно указать имена таблиц в этих вызовах столбцов, и вам нужно указать тип при создании полей.

class ConvertUsersNamesToSingleField < ActiveRecord::Migration 
    def change 
    add_column :users, :first_name, :string 
    add_column :users, :last_name, :string 
    remove_column :users, :name 
    end 
end 
+0

Большое вам спасибо! Именно то, что мне нужно :) Теперь отлично работает. – Arun

Смежные вопросы