2011-05-29 66 views
72
rails generate migration AddRetweetsCountToTweet retweets_count:integer 

好的我使用上面的命令行來創建遷移文件,該文件在生成的文件中自動生成代碼,將數據列添加到模型中。現在我想在生成遷移文件時將默認值添加到添加的列中。那可能嗎?我GOOGLE了它,但無法找到。你需要幫助。在創建遷移文件時分配默認值

+0

請參閱RailsGuide的相關主題:http://guides.rubyonrails.org/migrations.html您正在尋找的信息位於第一節移植剖析 – 2011-05-30 10:09:54

+1

我確切地知道您的意思。我一直試圖設置一個默認值,而試圖找到信息是一種痛苦。只生成裸SQL比較容易,但是在版本控制中沒有遷移。 – Tass 2011-11-08 16:16:41

回答

124

默認遷移產生不處理默認值(column modifiers支持但不包括defaultnull),但你可以創建自己的發電機。

您也可以手動遷移文件中加入的選項add_column運行rake db:migrate之前更新:

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

...讀Rails API

+9

好的謝謝你的回覆。我認爲,如果默認遷移生成器將提供處理默認值的選項,以便在生成後不必編輯遷移文件以指定默認值,那就太好了。 – kxhitiz 2011-05-29 14:42:38

3

我試圖t.boolean:積極, :用於創建整個表的遷移文件中的默認值=> 1。運行該遷移後,當我檢查分貝它作爲null。即使我告訴默認爲「1」。在那之後,我稍微改變了這個遷移文件,然後它爲我設置了創建表遷移文件的默認值。

t.boolean:active,:null => false,:default => 1。爲我工作。

我的Rails框架的版本是4.0.0

+0

':default => false'? – 2015-07-25 11:35:54

4

是的,我看不出如何在遷移生成器命令或者使用「默認」,但能夠爲新的字符串列指定一個默認值如下通過應用之前修改生成的遷移文件「耙分貝:遷移」:

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

這增加了一個名爲「色」新列到我的「部件」的模式,並設置新的控件的默認「顏色」到「紅」。

+0

(這是在Rails 4.2中。) – MSC 2016-07-03 06:43:08