Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何保持对迁移的概述?_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何保持对迁移的概述?

Ruby on rails 如何保持对迁移的概述?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,关于我在rails中的迁移,我有一个问题。 通常,当我想为模型添加柱时,我不会进行额外的迁移,而是执行以下步骤: rake db:rollback 接下来,我在db/migrations中更改迁移文件并重新运行: rake db:migrate 最大的问题是,当我这样做时,我丢失了我的数据。 以前我用命令行编写了迁移,例如 rake g migration Add_Column_House_to_Users house:string 这种方法的问题是,我的db/migrati

关于我在rails中的迁移,我有一个问题。 通常,当我想为模型添加柱时,我不会进行额外的迁移,而是执行以下步骤:

  rake db:rollback 
接下来,我在db/migrations中更改迁移文件并重新运行:

  rake db:migrate
最大的问题是,当我这样做时,我丢失了我的数据。 以前我用命令行编写了迁移,例如

  rake g migration Add_Column_House_to_Users house:string

这种方法的问题是,我的db/migrations文件夹后来变得非常大,而且不太清晰!我的意思是在最后我不知道对象有哪些变量!我不是rails方面的专家,我想问你如何在迁移过程中保持概述!谢谢

您绝对不应该对包含现有数据的表使用
db:rollback

我有几个生产RonR应用程序,有大量数据,迁移表中有100多个条目,添加新的迁移到调整表是rails的做法。不确定您所说的lucid是什么意思,但您的模式和数据模型将随着时间的推移而改变,这是可以预料的

一个提示。迁移非常好,但它们只是一个开始,您可以根据需要包含复杂的逻辑来修复现有数据(就像这样)

更改现有表中的数据: 另一个技巧:经常备份生产数据库(无论如何都应该这样做),但在部署之前使用它来测试所有迁移。我一直在运行这样的脚本进行本地测试:

mysql -u root -ppassword
drop database mydatabase_dev;
create database mydatabase_dev;
use mydatabase_dev;
source /var/www/bak/mydatabase_backup_2013-10-04-16.28.06.sql
exit

rake db:migrate

只是一个小想法-我只是使用db/migrate/schema.rb文件来确定数据库中的内容,而不是使用lucid跟踪整个迁移过程

,我的意思很清楚,我的意思是,当我有数千次迁移时,最后我不知道对象有哪些变量!但我真的得说谢谢你来自德国!你帮了我很多!在这种情况下,Lucid是正确的词,我大部分时间都在同一个项目上,所以可能更容易跟踪我。主要迁移后,您可以自动为应用程序生成ERD。MySQLWorkbench在mysql中很适合这样做。我想Postgres的应用程序也有一个。谢谢我不知道这个文件John-谢谢你投票给我的答案-我现在有足够的stackoverflow分数投票给答案等等。例如,现在有超过15分-Pierre
mysql -u root -ppassword
drop database mydatabase_dev;
create database mydatabase_dev;
use mydatabase_dev;
source /var/www/bak/mydatabase_backup_2013-10-04-16.28.06.sql
exit

rake db:migrate