2009-10-04 51 views
2

我有一個非常簡單的遷移,增加了一個布爾柱:爲什麼這個簡單的Rails遷移不能更新我的數據庫?

class AddMuteToPreferences < ActiveRecord::Migration 
    def self.up 
    add_column :preferences, :mute_audio, :boolean, :default => false 
    end 

    def self.down 
    remove_column :preferences, :mute_audio 
    end 
end 

我運行遷移:

== 81 AddMuteToPreferences: migrating ========================================= 
-- add_column(:preferences, :mute_audio, :boolean, {:default=>false}) 
    -> 1.9043s 
== 81 AddMuteToPreferences: migrated (1.9047s) ================================ 

看起來桃色的,對不對?但是,由於某些原因,我的偏好設置表中仍然沒有mute_audio列。

我找不出來。我之前執行過add_column,沒有任何問題。

有沒有人見過這種行爲?

+2

您是否正在查看與您執行遷移相同環境的數據庫? – Eimantas 2009-10-04 10:28:26

+0

那麼,我只是在做rake db:migrate(沒有指定env)。 我正在做ruby腳本/控制檯來檢查遷移後的模型。 在這兩種情況下,它應該默認開發,對不對? – Altay 2009-10-04 10:37:32

+0

事實上,雙重檢查並不會造成傷害。你也可能想嘗試遷移。如果它通過 - 確實增加了列。尾日誌/ development.log也應該有幫助! – Eimantas 2009-10-04 10:41:09

回答

3

我認爲沒有理由導致列添加失敗。您可能正在查看錯誤的數據庫。

調試最好的方法是進入軌道控制檯模式:

script/console development 

,並創建一個新的優先對象,並給mute_audio值:

>> p = Preference.new 
(...) 
>> p.mute_audio = true 

第一個命令之後,你應該看到包含有關新創建對象的信息的一些輸出。你應該看到它有mute_autio: false。如果設置屬性mute_audio不會輸出錯誤,則沒有問題,並且新添加的列在那裏。

相關問題