为什么我的 schema.rb 文件没有更新?

Leo*_*own 1 postgresql ruby-on-rails database-schema

我最近查看了我的 schema.rb 文件,并惊讶地发现我的数据库中确实存在的某些列没有出现,并且一些表完全丢失了。通过“def change add_column”迁移将丢失的列添加到数据库中,尽管以这种方式添加的某些列确实在 schema.rb 中按预期显示。

仔细检查后,我意识到自从我创建用户表以来,schema.rb 还没有更新。

20151019205241_create_users.rb:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps null: false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这在实践中并没有给我带来问题,但我认为 schema.rb 应该保持自动更新,并且更新它以重新创建数据库非常重要。谁能帮我弄清楚为什么它不会更新?

一种可能性是当我将数据库从 sqlite3 切换到 postgresql 时它停止更新。我记不太清楚了,但我认为时机是有道理的。

sme*_*fju 6

您可以使用rake db:schema:dump从当前数据库结构重新创建文件。

架构文件独立于驱动程序,因此从 sqlite3 迁移到 PostgreSQL 无关紧要。确保version文件中的定义不大于 current 当前日期。您还可以将整个文件添加到问题的片段中。