7

我在控制台上运行了以下命令

rails g migration payslips first_name:string last_name:string

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

class Payslips < ActiveRecord::Migration
  def change
  end
end

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

4

4 回答 4

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
于 2013-10-01T03:45:59.777 回答
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

于 2013-12-05T07:32:40.323 回答
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
于 2013-12-04T07:53:35.710 回答
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

于 2013-10-01T04:34:06.627 回答