Assigning default value while creating migration file

rails generate migration AddRetweetsCountToTweet retweets_count:integer

Ok I use above line to create migration file that automatically generates code in the generated file to add a column to a model Tweet with datatype integer. Now I want to add default value to the added column while generating the migration file. Is that possible? I googled it but couldn't find. Guys need help.

116874 次浏览
t.integer :retweets_count, :default => 0

应该可以。

看看 迁移的 Rails 指南

默认迁移生成器不处理默认值(支持 列修饰符列修饰符,但不包括 defaultnull) ,但您可以创建自己的生成器。

还可以在运行 rake db:migrate之前手动更新迁移文件,方法是向 add_column添加选项:

add_column :tweet, :retweets_count, :integer, :null => false, :default => 0

Rails API

我在迁移文件中尝试了 t.boolean: active,: default = > 1来创建整个表。在运行迁移之后,当我签入 db 时,它变成 null。虽然我说默认是“1”。之后,我稍微改变了迁移文件,像这样,然后它为我设置默认值创建表迁移文件。

布尔值: active,: null = > false,: default = > 1。

我的 Rails 框架版本是4.0

是的,我也不知道如何在迁移生成器命令中使用‘ default’,但是我可以通过修改生成的迁移文件来为新的字符串列指定一个默认值,如下所示,然后应用“ rake db: shift”:

class AddColumnToWidgets < ActiveRecord::Migration
def change
add_column :widgets, :colour, :string, default: 'red'
end
end

这将为我的“ Widget”模型添加一个名为“ color”的新列,并将新 Widget 的默认“ color”设置为“ red”。

您必须首先为模型基础创建您的迁移,然后使用 change _ column 创建另一个迁移来修改您之前的迁移..。

def change
change_column :widgets, :colour, :string, default: 'red'
end