我有一个表定义如下:
def self.up
create_table "equipes", :primary_key => "equipe_id", :force => true do |t|
t.string "equipe_nom", :limit => 30, :null => false
t.string "equipe_nom_pseudo", :limit => 8, :null => false
t.string "equipe_manager", :limit => 40
t.string "equipe_telephone_1", :limit => 22
t.string "equipe_adresse_email", :limit => 50
t.string "equipe_responsable", :limit => 50
t.timestamps
end
我想将字段"equipe_nom"的限制从30更改为150。
最好的方法是什么?
我可以使用RAKE G MIGRATION ....??
谢谢
首先:不要混淆rake
命令和rails
命令。Rake
命令将运行比make命令稍高级的任务。rails
是由rails框架提供的命令,例如,创建应用程序,生成迁移等。通过在终端中不带参数地输入rails
,您将获得所有rails
命令及其效果的列表。rails g migration migrationname
将为您生成一个迁移。在这个rails指南中阅读更多关于迁移的信息。
有了这些,有两种可能来解决你的问题:
- 如果您之前已经运行过此迁移,并且这是您的最后一次迁移,那么您需要运行
rake db:rollback
,然后更改迁移文件中的值,保存它,然后再次运行rake db:migrate
。这将首先逆转上一次的迁移(在本例中,删除表"equipes"),然后使用您的更改再次运行它。 - 如果这是一个较旧的迁移,您可以通过执行
rails g migration change_equipe_nom_to_limit_150
创建一个新的迁移。看看它创建的文件。在def up
中写入:change_column :equipes, :equipe_nom, :string, :limit => 150
。保存文件,运行rake db:migrate
如果您不确定哪种情况适用,只需执行第二种情况。