将csv导入Rails的日期错误

时间:2016-01-29 20:47:26

标签: ruby-on-rails date csv

我正在尝试导入一个csv文件,该文件包含美国格式的生日和纪念日,即MonthDayYear。我在SO上找到了这个答案,但它对我不起作用。如果我省略转换语言,数据导入为YearDayMonth,这是不正确的(并且还跳过月份> 12的日期。这是代码:

class Member < ActiveRecord::Base
  #this is for importing members from csv file
  def self.assign_from_row(row)
    member = Member.where(member_id:   row[:member_id]).first_or_initialize
    member.assign_attributes row.to_hash.slice(
      :member_id, :last_name, :first_name, :email, 
      :anniversary => DateTime.strptime(row[4], "%m/$d/%Y").strftime("%Y/%m/%d"), 
      :birthday => DateTime.strptime(row[5], "%m/$d/%Y").strftime("%Y/%m/%d")
      )
    member  
    end
  end

错误是“/ member / import”中的“ArgumentError”

同样,如果删除

,代码就可以导入
=> DateTime.strip ... /%d")

但是日期错了。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

ul.my-list>li没有按照您的方式工作,您无法提供哈希值和值,并期望它合并其中,您想要更像这样的东西:

slice

虽然,我不能说member.assign_attributes row.to_hash.slice( :member_id, :last_name, :first_name, :email ).merge( :anniversary => DateTime.strptime(row[4], "%m/$d/%Y").strftime("%Y/%m/%d"), :birthday => DateTime.strptime(row[5], "%m/$d/%Y").strftime("%Y/%m/%d") ) row[4]是否是正确的元素,但是在其他地方你使用符号索引到该结构,但这里的本质是使用row[5]而不是你拥有的东西。