我在控制台上运行了以下命令
rails g migration payslips first_name:string last_name:string
但这只会生成如下所示的空文件
class Payslips < ActiveRecord::Migration
def change
end
end
我找不到原因。控制台生成命令有问题吗?
这是正确的功能,如果你想创建模型,那么你需要运行:
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
在表名称之前使用单词:Create。
$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
假设你的模型已经创建了,你在解释你真正想要做什么时必须更加明确:
rails g migration add_first_name_and_last_name_to_payslips first_name:string last_name:string
上面的内容告诉迁移器将first_name和last_name添加到工资单表中,因此您最终会进行此迁移:
class AddFirstNameAndLastNameToPayslips < ActiveRecord::Migration
def change
add_column :payslips, :first_name, :string
add_column :payslips, :last_name, :string
end
end
您可以单独生成迁移来修改表。但是要创建新表,您必须生成模型,以便它将为相应模型生成创建表迁移(就像@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