创建迁移文件时分配默认值

时间:2011-05-29 13:31:25

标签: ruby-on-rails migration

rails generate migration AddRetweetsCountToTweet retweets_count:integer 

好的,我使用上面的行来创建迁移文件,该文件在生成的文件中自动生成代码,以便向具有数据类型整数的模型Tweet添加列。现在,我想在生成迁移文件时向添加的列添加默认值。那可能吗?我用谷歌搜索但找不到。伙计们需要帮助。

5 个答案:

答案 0 :(得分:155)

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

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

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

...并阅读Rails API

答案 1 :(得分:41)

t.integer :retweets_count, :default => 0

......应该有用。

请参阅Rails guide on migrations

答案 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