我遇到问题,因为我尝试导入在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时,我将知道如何导入文件以及是否需要更改。
答案 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