Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 如何在rails应用程序中实现包含所有美国邮政编码列表的db表?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何在rails应用程序中实现包含所有美国邮政编码列表的db表?

Ruby on rails 如何在rails应用程序中实现包含所有美国邮政编码列表的db表?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,迁移将如何进行?您会直接将它们加载到mysql数据库中,还是让ruby例程来执行此操作。要获取原始数据,我只需在Google上搜索,您会发现许多邮政编码数据库,但其中一些并非免费的 然后,我会查看数据,以了解表中应该包含哪些列,并构建适当的迁移和模型 然后,我将编写一个外部ruby脚本,该脚本从邮政编码数据库的任何格式读取数据,并将其直接写入应用程序的数据库。您也可以将此作为Rails应用程序的一部分,但通常不认为在处理外部数据时是必要的。 然而,重要的是,邮政编码表不被其他表中的ID引用,因为

迁移将如何进行?您会直接将它们加载到mysql数据库中,还是让ruby例程来执行此操作。

要获取原始数据,我只需在Google上搜索,您会发现许多邮政编码数据库,但其中一些并非免费的

然后,我会查看数据,以了解表中应该包含哪些列,并构建适当的迁移和模型

然后,我将编写一个外部ruby脚本,该脚本从邮政编码数据库的任何格式读取数据,并将其直接写入应用程序的数据库。您也可以将此作为Rails应用程序的一部分,但通常不认为在处理外部数据时是必要的。
然而,重要的是,邮政编码表不被其他表中的ID引用,因为如果您想在以后更新它(邮政编码更改),这会使它变得非常复杂。因此,我仍然会将邮政编码本身存储在用户表中或任何地方。

这里有一个指向美国所有邮政编码的CSV链接:。该文件每个zipcode有7列,zipcode位于第一列中

现在,您可以使用ruby CSV解析器,或者类似的东西来解析CSV,但是我认为,如果您只是使用shell命令解析CSV,速度会快得多。例如,我刚刚在我的系统上运行了它,它立即正确解析了文件:

cut-d','-f1 zip_codes.csv>out.csv

此时,只需在ruby中逐行读取文件,如下所示:

File.open( out.csv ).each do |line|
  Zipcode.create(:zip => line) 
end

您将使用您正在使用的任何模型替换
Zipcode.create..
,因为您可能不需要单独的Zipcode模型。

您实际上不需要
cat
cut-d','-f 1 zip_codes.csv>out.csv
也会这样做。:-)啊,对。谢谢:)在我的帖子中编辑了这个。