ruby-on-rails - 为什么这个简单的 Rails 迁移没有更新我的数据库?

标签 ruby-on-rails migration

我有一个非常简单的迁移,添加了一个 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/

相关文章:

php - Laravel 4 迁移 : class not found exception

MySQL UTF8 数据库迁移

ruby-on-rails - "uninitialized constant"通过字段访问 has_many 时出现类名不同的错误

ruby-on-rails - Ruby On Rails f.checkbox 隐藏字段

mercurial - 检查 Mercurial 存储库的子集

sql - 搜索(免费软件)数据库迁移工具

ruby-on-rails - 无法将 Puma 作为守护进程运行 OptionParser::AmbiguousOption:模糊选项:-d

ruby-on-rails - 清除 Rails 服务器中的终端

mysql - Rails : simple_form that fills multiple, 连接表

php - Laravel 迁移似乎无法在某些计算机上运行