Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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/8/redis/2.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 将CSV列映射到Rails中的模型_Ruby On Rails - Fatal编程技术网

Ruby on rails 将CSV列映射到Rails中的模型

Ruby on rails 将CSV列映射到Rails中的模型,ruby-on-rails,Ruby On Rails,我已经看到了很多关于如何使用FasterCSV、SmarterCSV或默认CSV库导入CSV的示例。所有这些例子都假设csv是某种格式的 我会有一个包含地址字段street、hsno、city等的固定模型,但我无法控制上传的数据 我正在寻找一种方法,在数据加载到模型中之前,通过标题名称将CSV数据映射到我的模型 如果您有任何想法,我们将不胜感激。也许您可以创建一个带有模型属性的组合框,并让用户选择列应匹配的属性 看一看剖面映射字段,了解一个可视示例 很抱歉广告,但这是我记得的一个例子我想你最好给

我已经看到了很多关于如何使用FasterCSV、SmarterCSV或默认CSV库导入CSV的示例。所有这些例子都假设csv是某种格式的

我会有一个包含地址字段street、hsno、city等的固定模型,但我无法控制上传的数据

我正在寻找一种方法,在数据加载到模型中之前,通过标题名称将CSV数据映射到我的模型


如果您有任何想法,我们将不胜感激。

也许您可以创建一个带有模型属性的组合框,并让用户选择列应匹配的属性

看一看剖面映射字段,了解一个可视示例


很抱歉广告,但这是我记得的一个例子

我想你最好给出一个CSV模板。如果你没有在你的代码和用户输入之间设置一个标准,那么很难映射用户发送的内容和你在应用程序中拥有的内容。一些用户会有“名字”和“姓氏”字段,而其他用户只有“全名”。提供一个带有预填充数据的CSV模板,或者只提供列名是一个更好的主意,我想我在这一点上与@MrYoshiji合作。你正在陷入疯狂的深渊。许多用户,即使得到了明确的CSV格式,也会把它搞砸。做这个开放式的程序会让你的代码暴露在各种各样的疯狂变体中,你会一直追查到最后。您当然可以添加代码,尝试在不同的复杂程度上猜测数据是什么,但您仍然需要考虑无法使用的格式。我同意这是混乱的,但我觉得对于最终客户来说,能够上传一个文件,而不是确保格式符合我的要求更好。我确实计划使用带有模型字段名的组合框,并让用户能够将其标题映射到我的模型字段。困难在于必须先读取上传的文件,以便捕获标题。我现在看到的唯一可能性是使用javascript读取前几行,然后从那里开始。这将消除使用gem-like-Roo上传xls文件的可能性。