2013-10-01 2 views
7

я получил под команду, выполняемую на консолиRails генерировать миграции не работает

rails g migration payslips first_name:string last_name:string 

Но это только создает пустой файл, как показано ниже

class Payslips < ActiveRecord::Migration 
    def change 
    end 
end 

Я не могу найти причину. Что-то не так с командой генерации консоли?

+0

Почему вы думаете, что что-то не так с генератора а не входной вы даете к генератору? Вы пытаетесь добавить столбцы в таблицу или создать новую таблицу? В любом случае, вы должны указать, что вы пытаетесь сделать. Посмотрите на руководство по рельсам http://guides.rubyonrails.org/migrations.html#creating-a-migration – j03w

+0

'migration generator' не создает файл миграции с добавлением столбца, а просто пустым файлом. У меня уже есть модель для Payslip, поэтому Мне нужно создать только новый файл миграции. –

+0

Попробуйте «rails g migration» AddFirstNameAndLastNameToPayslips first_name: string last_name: string'. Rails не так умен, чтобы угадать, что вы пытаетесь сделать, просто сообщив ему имя таблицы, которое вы знаете. Пожалуйста, прочтите [doc] (http://guides.rubyonrails.org/migrations.html#creating-a-migration) – j03w

ответ

6

правильна функциональность, если вы хотите создать модель, то вам нужно запустить:

rails g model payslips first_name:string last_name:string 

Тогда вы получите:

class CreatePayslips < ActiveRecord::Migration 
    def change 
    create_table :payslips do |t| 
     t.string :first_name 
     t.string :last_name 

     t.timestamps 
    end 
    end 
end 
0

Вы можете произвести миграцию в одиночку изменить таблицы. Но для создания новой таблицы вы должны сгенерировать модель так, что она будет порождать миграцию таблицы для соответствующей модели (как @efrenfuentes сказал)

Или вы можете попробовать то, что вы хотите сделать с плагином под названием migration_for

rails plugin install git://github.com/capotej/migration_for.git

rails g migration_for create_table:payslips add_column:payslips:first_name:string add_column:payslips:last_name:string

2

Предполагая, что ваша модель была создана, вы должны быть более четко, объясняя то, что вы действительно хотите сделать:

rails g migration add_first_name_and_last_name_to_payslips first_name:string last_name:string 

выше говорит Migrator добавить first_name и Last_name к столу платежные ведомости, так что вы в конечном итоге с этой миграции:

class AddFirstNameAndLastNameToPayslips < ActiveRecord::Migration 
    def change 
    add_column :payslips, :first_name, :string 
    add_column :payslips, :last_name, :string 
    end 
end 
2

Используйте слово: Создать перед вашим именем таблицы.

$ рельсы генерировать имя миграции CreateProducts: строка PART_NUMBER: строка

генерирует:

class CreateProducts < ActiveRecord::Migration 
    def change 
    create_table :products do |t| 
     t.string :name 
     t.string :part_number 
    end 
    end 
end 

Источник: http://guides.rubyonrails.org/migrations.html

+0

Это порождает для меня пустую миграцию. Рельсы 3.2.2, Ruby 2.1.5p273 –

+1

для Mee тоже: '' 'класса CreateProducts Jan

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