Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 - Fatal编程技术网

Ruby on rails 铁路播种城市和地区表

Ruby on rails 铁路播种城市和地区表,ruby-on-rails,Ruby On Rails,我有一个Rails应用程序,其中有标准的城市和地区行,我希望在生产和开发中的表中初始化这些行。我将数据以数组形式保存在单独的文件中。 示例cairo_areas.txt文件包含以下内容: ["Downtown - Abdin", "Downtown - Abu El Rish", "Downtown - Ahmed Helmy", "Downtown - Ahmed Maher", "Downtown - Gamea' El Banat"] 当然,这只是作为示例的数组的一部分 现在我试图寻找在

我有一个Rails应用程序,其中有标准的城市和地区行,我希望在生产和开发中的表中初始化这些行。我将数据以数组形式保存在单独的文件中。 示例cairo_areas.txt文件包含以下内容:

["Downtown - Abdin",
"Downtown - Abu El Rish",
"Downtown - Ahmed Helmy",
"Downtown - Ahmed Maher",
"Downtown - Gamea' El Banat"]
当然,这只是作为示例的数组的一部分

现在我试图寻找在数据库中进行初始化的最佳方法,但我找到的大多数答案似乎都非常陈旧。 简而言之,我发现的两种方法是:

  • 将数据插入
    seeds.rb
    中。缺点是那里的大多数数据都是用于测试目的的,我试图将原始数据与伪造数据分开
  • 方法2是创建一个任务,将城市和地区数据植入数据库,但我发现的大多数答案在旧版本的Rails中都非常旧

  • 我想知道在初始化时将真实生产数据插入数据库的最佳方法是什么?

    根据Mark在回答中告诉您的,第三种方法广泛用于向生产环境添加数据,即创建迁移以创建这些记录或修改现有记录

    关于seeds.rb必须说两件事,这个文件应该包含最少的数据量,根据系统的业务逻辑,这些数据使系统能够正常工作。例如,创建角色、权限和其他信息,如果没有这些信息,您的系统将毫无意义。此外,这个seeds.rb脚本应该是幂等的,因此您可以随时重新运行seeds.rb,而不会中断数据的逻辑。所以,基本上应该在执行Model.create之前使用Model.find。从这个意义上讲,您可以继续向该种子文件添加信息,并随时重新运行它

    您可能想知道如何选择迁移或rake任务。我建议您使用迁移,因为如果使用正确,您可以回滚这些更改。使用任务时没有的选项


    对不起,如果我说得太多,我希望这会有帮助

    根据Mark在回答中告诉您的内容,还有第三种选择,广泛用于向生产环境添加数据,即创建迁移以创建这些记录或修改现有记录

    关于seeds.rb必须说两件事,这个文件应该包含最少的数据量,根据系统的业务逻辑,这些数据使系统能够正常工作。例如,创建角色、权限和其他信息,如果没有这些信息,您的系统将毫无意义。此外,这个seeds.rb脚本应该是幂等的,因此您可以随时重新运行seeds.rb,而不会中断数据的逻辑。所以,基本上应该在执行Model.create之前使用Model.find。从这个意义上讲,您可以继续向该种子文件添加信息,并随时重新运行它

    您可能想知道如何选择迁移或rake任务。我建议您使用迁移,因为如果使用正确,您可以回滚这些更改。使用任务时没有的选项


    对不起,如果我说得太多,我希望这会有帮助

    如果我们需要修改生产数据,并且有大量数据需要导入,我们通常会创建一个包含所有更改的迁移。这样,就有一些交易记录,而不仅仅是某个牛仔在控制台中游荡。如果我们需要修改生产数据,并且有大量数据需要导入,我们通常创建一个包含所有更改的迁移,这样就有了一些事务记录,而不仅仅是控制台中的牛仔