Ruby on rails 未知属性';标题…';在Rails上导入CSV期间

Ruby on rails 未知属性';标题…';在Rails上导入CSV期间,ruby-on-rails,ruby,csv,libreoffice,Ruby On Rails,Ruby,Csv,Libreoffice,我有一个问题,因为我试图导入我在Mac上用数字创建的CSV 以前在Ubuntu和LibreOffice上一切都正常 当我尝试导入我的CSV文件时,出现错误 unknown attribute 'adress user_id room_type etc...' for Bien. 我认为它不会检测分隔符,并将第一个侦听器行作为一个字符串 我的导入功能: def self.import(file) CSV.foreach(file.path, headers: true) do |row|

我有一个问题,因为我试图导入我在Mac上用数字创建的CSV

以前在Ubuntu和LibreOffice上一切都正常

当我尝试导入我的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
我将知道如何导入文件,以及在创建数字CSV时是否有需要更改的内容

更新


我认为您完全正确,看起来分隔符没有得到尊重,因此标题行显示为一个长字符串。要进行调试,您可以尝试将
pry
放入并运行
CSV.read(file.path)
以查看转换为CSV的整个输出。一旦你这样做了,你应该能够看到什么数字用于分隔符

建议数字使用分号作为默认分隔符,因此如果定义
col_sep:';'
作为一个选项,这可能会起作用。(参考:)

所以,代码应该是

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

你能提供CSV文件中的
Bien
属性和前几行吗?@Leo我更新了CSVI嫌疑犯的屏幕截图,因为你的
address
列的值中有逗号,数字可能会将你的分隔符从逗号改成其他形式(可能是分号)。请看我的答案,我认为它适用于@supremebeing7,但不应该是这种情况,默认情况下,LibreOffice Calc用引号包围文本字段,并且文本字段内的引号被转义。@AntoineWako在Calc中提供内容的屏幕截图很好。但您是否也可以提供生成的CSV(不是屏幕截图,而是纯文本代码块)?结果可能会因在LibreOffice中选择的CSV设置而异。我看到分隔符是空格,所以我用LibreOffice更改分隔符,现在它的工作谢谢!