2015-11-20 45 views
0

我使用Rails 3.12。另外,我使用PostgreSQL。 我會在我的遷移中更改我的字段的默認值。如何改變postgresql在移植軌道上的列?

change_column :tables, :field, :integer, :default => nil 
change_column_default :tables, :field,nil 

我測試這些說明,但沒有一個工作。

你能幫我嗎? 謝謝

+0

您收到的錯誤消息是什麼? –

回答

0

你的命令應該可以工作。我認爲第二個更可取。但是,它可能是,當你產生遷移,如:

rails g migration change_column_default :tables, :field, nil 

它產生在你的migrate目錄遷移文件,db目錄裏面,但是如果你選擇了它產生的遷移文件是空的。我不知道爲什麼會發生這種情況。所以當你跑步時

rake db:migrate 

沒有什麼實際做的。

我認爲你應該做的:

進入到生成的遷移文件在您migrate目錄,並添加:

change_column_default :tables, :field, nil 

改變方法內。 然後運行rake db:migrate。 運行rails控制檯並測試一些數據。 注意:更改postgresql列的默認值不會影響現有行。它隻影響第5.5.5節中所述的未來插入。here

+0

好的。謝謝你的澄清。 我也找到了改變表格的所有行的命令(例如User.update_all) – Djik

+0

歡迎@Diik。你的意思是你找到了'User.update_all',或者你需要知道一個命令來改變表中的所有行嗎? – MattwalOlaide