2014-06-10 59 views
-3

我想下面的那种CSV记录保存到DB:CSV记录用空格不保存到数据库

9,Lambert,Kent D,Senator

但它没有被保存在数据库中,事务正在回滚并给出这个错误。

{"state_senate_district_id"=>"9", "last_name"=>"Lambert", "first_name"=>"Kent D", "tag"=>"Senator"} 
    (0.2ms) BEGIN 
    (0.1ms) ROLLBACK 
["First name should contain only alphabets"] 

所以在first_name = "Kent D"的空间,因此,它是不允许的空间,所以它不保存到数据库。

下面是解析CSV代码:

hash = {} 
CSV.foreach('Senator.csv', {:headers=>:first_row}) do |line| 
hash['state_senate_district_id'] = line[0] 
hash['last_name'] = line[1] 
hash['first_name'] = line[2] 
hash['tag'] = line[3] 
puts hash 
senator = Senator.new(hash) 
unless senator.save(hash) 
    err = senator.errors.full_messages 
    p err 
    File.open("errors", "a") do |csv| 
     err.each do |c| 
     csv << "\n" 
     csv << "||||||" 
     csv << [c] 
     end 
    end 
    end 
+0

尝试{:col_sep =>“,”} –

+0

请包括您的Senator模型,因为这可能是问题所在。 –

+0

非常感谢你,这是正确的在模型验证:) – kamal

回答

0

你可能有在Senator模式,阻止从具有空间first_name领域的验证规则。删除验证或更改它,以便它允许空格。

+0

非常感谢你,这是正确的模型验证:) – kamal