问题描述
|
rails generate migration AddRetweetsCountToTweet retweets_count:integer
好的,我使用上面的代码创建了迁移文件,该文件会自动在生成的文件中生成代码,以将列添加到数据类型为整数的模型Tweet中。现在,我想在生成迁移文件时向添加的列中添加默认值。那可能吗?我用谷歌搜索,但找不到。伙计们需要帮助。
解决方法
默认迁移生成器不处理默认值(支持列修饰符,但不包含
default
或null
),但是您可以创建自己的生成器。
您还可以在运行rake db:migrate
之前通过向add_column
添加选项来手动更新迁移文件:
add_column :tweet,:retweets_count,:integer,:null => false,:default => 0
...并阅读Rails API
, t.integer :retweets_count,:default => 0
... 应该管用。
请参阅有关迁移的Rails指南
, 是的,我也看不到如何在迁移生成器命令中使用\'default \',但是能够在应用\“ rake db”之前通过修改生成的迁移文件,为新的字符串列指定默认值,如下所示:迁移\”:
class AddColumnToWidgets < ActiveRecord::Migration
def change
add_column :widgets,:colour,:string,default: \'red\'
end
end
这会向我的\'Widget \'模型添加一个名为\'colour \'的新列,并将新窗口小部件的默认\'colour \'设置为\'red \'。
, 我在迁移文件中尝试过t.boolean:active,:default => 1以创建整个表。运行该迁移后,当我在db中签入时,将其设置为null。即使我告诉默认为\“ 1 \”。之后,我像这样稍微更改了迁移文件,然后为我创建了创建表迁移文件的默认值。
t.boolean:active,:null => false,:default => 1。为我工作。
我的Rails框架版本是4.0.0
, 您必须首先为模型基础创建迁移,然后再创建另一个迁移以使用change_column修改以前的迁移...
def change
change_column :widgets,default: \'red\'
end