导入csv到Rails的日期错误
问题描述:
我想导入一个csv文件,有美国格式,即MonthDayYear生日和纪念日。我在SO上找到了这个答案,但它对我没有用。如果我离开关转换语言,将数据导入为YearDayMonth,这是不正确的(也跳过日期在一个月> 12下面的代码:导入csv到Rails的日期错误
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
的错误是“引发ArgumentError在/会员/进口“
同样,代码工作尽可能进口,如果我删除
=> DateTime.strip ... /%d")
但日期是错误的。感谢您的帮助。
答
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]
是正确的元素,在其他地方使用符号索引到该结构中,但这里的本质是使用slice(...).merge(...)
而不是您拥有的元素。
谢谢。你是对的,排是[[生日]]等行。我因为一个愚蠢的错字而苦苦挣扎了很长时间! (:/%米/%d /%Y“) –