【问题标题】:Update manual database changes in rails app更新 Rails 应用程序中的手动数据库更改
【发布时间】:2015-08-01 22:52:07
【问题描述】:

我在 rails 中创建了 'Country' 表,其中包含以下列:

国家
身份证
国家代码
名称
前缀
网址

然后,更新了 phppgadmin 中的列名,现在表格看起来像:

国家
身份证
country_id
国家名称
country_iso
网址

但是,在 Rails 中,我的 schema 仍然是:

create_table "countries",强制:true do |t|
t.integer "country_code"
t.string "名称"
t.string "前缀"
t.string“网址”
t.datetime "created_at"
t.datetime "updated_at"
结束

如何将 phppgadmin 所做的更改更新到我的 rails 应用程序。

PS:我是 Rails 的初学者。如果我遵循任何错误的方法,请帮助我。谢谢。

【问题讨论】:

    标签: postgresql ruby-on-rails-4


    【解决方案1】:

    您始终可以使用迁移重命名列名,这也是最佳做法(如果我错了,请纠正我)。

    创建迁移文件

    rails g migration RenameColumnNameTableName
    

    它会生成一个迁移文件

    "#{current_timestamp}_rename_column_name_table_name.rb"

    为更改列名编写迁移

    class RenameColumnNameTableName < ActiveRecord::Migration
      def change
        rename_column :table_name, :old_column_name, :new_column_name
      end
    end
    

    运行rake db:migrate,您会发现架构文件发生了变化。

    【讨论】:

      【解决方案2】:

      您可以使用 bin/rake db:schema:dump 重新构建架构,但要备份一分钟,然后再执行此操作。

      如果您想更改数据库结构,请不要使用其他工具进行此操作,而是创建migration。这是一篇关于如何使用迁移重命名列的 stackoverflow 文章:How can I rename a database column in a Rails migration?(在链接的 stackoverflow 问题中使用 rails 3.1 版本,它仍然适用于 rails 4+)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 2021-03-18
        • 2011-04-25
        • 2015-12-02
        • 1970-01-01
        • 2014-10-19
        相关资源
        最近更新 更多