2011-12-02 3 views
0

연구원 Overflowers을 FasterCSV가있는 CSV에서 날짜를 가져 오기 위해 마이그레이션에서 지정한 데이터 유형은 무엇입니까?

내가이 형식으로 날짜를 포함하는 탭으로 구분 된 csv 파일이 있습니다 30-11-2011 2:24

내가 FasterSCV 보석으로 CSV를 구문 분석하고 있습니다. 이 정보를 datetime으로 저장하는 마이그레이션을 만들었습니다. 해야합니까? 아니면 그걸 string으로 정의해야하고 Ruby을 검색 할 때마다 변환해야합니까?

FasterCSV 변환기를 정의해야합니까?

감사합니다 ...

답변

0

DateTime은 약간 까다 롭습니다. IS는 엄격한 형식

irb(main):008:0> DateTime.now 
=> Fri, 02 Dec 2011 22:14:57 +0100 

을 가지고하지만 당신은이

irb(main):015:0> t = DateTime.parse("30-11-2011 2:24").utc 
=> Wed, 30 Nov 2011 02:24:00 +0000 
irb(main):016:0> t.class 
=> DateTime 

지금 당신이 DateTime 개체를 할 수 있습니다. 그러나 구문 분석 방법의 끝 부분에있는 시간대에주의하십시오.

데이터베이스를 채울 때 db 폴더의 seeds.rb 파일을 사용하십시오. 나는 보통 db 폴더에 텍스트 파일을 만들고 편집기를 사용하고 모든 탭을 "|" 각 라인 의 배열은 다음과 같습니다 말할 수 있습니다 만들 (가되어 asuming 할 일 목록)

할 일 파일

make hay|30-11-2011 2:24 
fix tractor|24-11-2011 2:14 

seeds.rb 파일

open("db/todo") do |todos| 
    todos.read.each_line do |todo| 
    n = todo.chomp.split("|") 
    Todo.create!(:entry => n[0], :at_date => DateTime.parse("#{n[1]}").utc) 
    end 
end 

다음

을 실행
rake db:seed 

루비 마법을 만드십시오! 이 코드를 테스트하지는 않았지만 올바른 방향으로 인도 할 수 있습니다.

+0

대단합니다! 시간 내 주셔서 대단히 감사합니다! 내 늦은 미안한데 ... – Cacofonix

+0

아무 문제 없어, 도와 줘서 기쁩니다! –