rails generate migration AddRetweetsCountToTweet retweets_count:integer
好的,我使用上面的行来创建迁移文件,该文件在生成的文件中自动生成代码,以便向具有数据类型整数的模型Tweet添加列。现在,我想在生成迁移文件时向添加的列添加默认值。那可能吗?我用谷歌搜索但找不到。伙计们需要帮助。
答案 0 :(得分:155)
默认迁移生成器不处理默认值(column modifiers受支持,但不包括default
或null
),但您可以创建自己的生成器。
您还可以在运行rake db:migrate
之前手动更新迁移文件,方法是将选项添加到add_column
:
add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
...并阅读Rails API
答案 1 :(得分:41)
答案 2 :(得分:5)
是的,我无法看到如何使用'默认'在migration generate命令中,可以通过在应用" rake db:migrate"之前修改生成的迁移文件,如下所示为新字符串列指定默认值:
class AddColumnToWidgets < ActiveRecord::Migration
def change
add_column :widgets, :colour, :string, default: 'red'
end
end
这会添加一个名为&#39; color&#39;的新列。到我的小工具&#39;模型并设置默认的颜色&#39;新的小部件到&#39; red&#39;。
答案 3 :(得分:3)
我试过t.boolean:active,:default =&gt; 1用于创建整个表的迁移文件。在我检入db后运行该迁移后,它变为null。即使我告诉默认为&#34; 1&#34;。稍后我稍微更改了这样的迁移文件,然后它在我创建表迁移文件中设置默认值。
t.boolean:active,:null =&gt; false,:default =&gt; 1。为我工作。
我的Rails框架版本是4.0.0
答案 4 :(得分:0)
您必须首先为模型基础知识创建迁移,然后创建另一个迁移以使用change_column ...来修改以前的迁移...
def change
change_column :widgets, :colour, :string, default: 'red'
end