Rails生成迁移不起作用

时间:2013-10-01 03:37:19

标签: ruby-on-rails ruby ruby-on-rails-4

我在控制台

上运行了以下命令
rails g migration payslips first_name:string last_name:string

但这只会生成如下的空文件

class Payslips < ActiveRecord::Migration
  def change
  end
end

我找不到原因。控制台生成命令有问题吗?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

假设您的模型已创建,在解释您真正想要做的事情时,您必须更明确:

rails g migration add_first_name_and_last_name_to_payslips first_name:string last_name:string

上面告诉迁移者将first_name和last_name添加到payslips表中,因此您最终会进行此迁移:

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

答案 2 :(得分:2)

在表名前使用创建一词。

$ rails生成迁移CreateProducts name:string part_number:string

产生

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

答案 3 :(得分: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