我正在尝试导入一个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")
但是日期错了。谢谢你的帮助。
答案 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]
而不是你拥有的东西。