我有一个非常简单的迁移,它添加了一个布尔列:
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。
以前有没有人见过这种行为?
答案 0 :(得分:3)
我认为没有理由让rails无法添加列。您可能正在查找错误的数据库。
调试此方法的最佳方法是进入rails console模式:
script/console development
创建一个新的首选项对象并为mute_audio赋予一个值:
>> p = Preference.new
(...)
>> p.mute_audio = true
在第一个命令之后,您应该看到一些包含有关新创建对象的信息的输出。你应该看到它有mute_autio: false
。如果设置属性mute_audio不输出错误,则没有问题,并且新添加的列就在那里。