如何将新数据表添加到生产中的rails应用程序,而不会丢失现有表中的数据

时间:2018-03-06 21:24:22

标签: postgresql heroku ruby-on-rails-5

我对rails非常陌生,并设法构建一个应用程序并在heroku上部署。

在开发中(即在localhost上),我已经成功地向应用程序添加了两个新表。我现在想要将两个新表放入生产,而不会从应用程序的生产版本中的现有表中丢失数据

到目前为止,我将新表放入应用程序的唯一经验是删除(所有)现有表并将其替换为所有新表,即:

heroku pg:reset DATABASE_URL 
heroku run rake db:migrate 
heroku run rake db:seed

如果我运行上面的代码,它将删除所有现有数据并插入所有新数据。

我能想到的最好的方法是提取我想要保留的表,并创建一个新的seed.rb文件,该文件使用现有表的现有数据为数据库设定种子,并为新表提供新数据。听起来它会起作用,但有点笨重。

有没有更好的方法来添加新表而不会丢失现有表中的数据?

1 个答案:

答案 0 :(得分:0)

首先;

$ rails g migration add_foobar_column_to_my_table

这将在db / migrate文件夹下创建一个新的迁移文件。打开该文件并根据您的需要进行编辑。例如:

class AddNameToUsers < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :name, :string
  end
end

您无需删除现有数据即可更改数据库。这就是为什么许多框架都有一些叫做“迁移”的东西。以下是Rails的迁移文档:

http://edgeguides.rubyonrails.org/active_record_migrations.html