我是否可以运行快速控制台命令来更改对象的类型?它目前是Ruby Date类型,但我希望它是Ruby Time类型。
我从这个脚手架命令开始:
$ rails generate scaffold Post title:string content:text postdate:date
但希望我能做到以下几点:
$ rails generate scaffold Post title:string content:text postdate:time
是否有命令可以运行以进行更新?
答案 0 :(得分:3)
有时你必须编写一些实际的代码,即使在Rails中也是如此。尝试创建迁移,然后使用change_column
方法。像
change_column :my_table, :my_column, :new_type
您将它放在db迁移文件中,而不是shell中。
答案 1 :(得分:2)
如果您不希望错误成为迁移集的永久部分,只需向下迁移(rake db:rollback
),编辑迁移文件,然后向上迁移(rake db:migrate
)。 / p>
编辑:要回答有关单个命令的问题?就在这里。编辑迁移后:
rake db:migrate:redo
这只会在一个命令中运行“向下”,然后是“向上”。
答案 2 :(得分:0)
更改列类型的三个步骤:
第1步:
使用以下代码生成新的迁移文件:
rails g migration sample_name_change_column_type
第2步:
转到/db/migrate
文件夹并编辑您创建的迁移文件。有两种不同的解决方案。
def change
change_column(:table_name, :column_name, :new_type)
end
2
def up
change_column :table_name, :column_name, :new_type
end
def down
change_column :table_name, :column_name, :old_type
end
第3步:
不要忘记执行此命令:
rake db:migrate
我已经为Rails 4测试了这个解决方案,它运行良好。