在Rails上导入CSV期间不知道属性'headers ...'

时间:2018-07-19 14:39:25

标签: ruby-on-rails ruby csv libreoffice

我遇到问题,因为我尝试导入在Mac上用数字创建的CSV

以前,使用LibreOffice在Ubuntu上进行的所有工作,

当我尝试导入CSV文件时出现错误

unknown attribute 'adress   user_id room_type etc...' for Bien.

我认为它不能检测到分隔符并将第一条听众行作为一个字符串。

我的导入功能:

def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
    @bien = Bien.create! row.to_hash
    @bien.save
  end 
end

在Numbers上创建CSV时,我将知道如何导入文件以及是否需要更改。

更新 csv

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您是完全正确的,似乎不遵守分隔符,因此标​​题行显示为一个长字符串。要进行调试,您可以尝试将pry放入并运行CSV.read(file.path),以查看转换为CSV的整个输出。完成此操作后,您应该能够看到Numbers用于分隔符的含义。

This post建议Numbers使用分号作为默认分隔符,因此,如果将col_sep: ';'定义为选项,则可能会成功。 (参考:CSV docs)。

因此,代码应该是

def self.import(file)
  CSV.foreach(file.path, col_sep: ';', headers: true) do |row|
    @bien = Bien.create! row.to_hash
    @bien.save
  end 
end