我有一个非常简单的迁移,添加了一个 bool 列:
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 没有任何问题。
以前有人见过这种行为吗?
最佳答案
我认为 Rails 没有理由无法添加列。您可能正在查找错误的数据库。
调试此问题的最佳方法是进入 Rails 控制台模式:
script/console development
并创建一个新的首选项对象并给 mute_audio 一个值:
>> p = Preference.new
(...)
>> p.mute_audio = true
在第一个命令之后,您应该看到一些输出,其中包含有关新创建的对象的信息。您应该看到它有 mute_autio: false
。如果设置属性 mute_audio 没有输出错误,则没有问题,新添加的列就在那里。
关于ruby-on-rails - 为什么这个简单的 Rails 迁移没有更新我的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516100/