2010-04-19 1 views
0

현재 CSV를 activerecord 요소로 가져오고 있지만, 초 단위로 ints 또는 decimals 요소를 구문 분석하도록 선택하는 것은 fastcsv를 사용하여 결정할 수 없습니다. 나는 모든 것을 int 또는 다른 것으로 또는 모든 것을 문자열로 파싱하도록 선택할 수 있습니다. 일부 열은 int로, 일부는 소수로, 일부는 문자열로 구문 분석해야합니다.fastercsv 구문을 int 또는 기타로 액티브 레코드로 변환

그렇지 않으면 내가 모든 것을 구문 분석하여 activerecord의 개별 요소를 새 양식으로 변환하고 업데이트하는 방법이 있습니까? 문자열로 값을 구문 분석 한 다음 특정 값을 정수로 변환하고, 다른 값을 정수로 변환한다고 가정 해 보겠습니다.

답변

0

데이터를 ActiveRecord에 문자열로 입력하기 만하면됩니다. ActiveRecord는 데이터베이스 스키마를 알고 있으며 입력을 구문 분석하는 방법을 알고 있습니다.

예를 들어, 외래 키의 값을 설정할 때 문자열을 정수로 변환 할 필요가 없습니다.

r = Record.create :relation_id => "3" 
r.relation_id 
# => 3 
# note the difference between "3" and 3 
0

일반적으로 시몬의 대답이 좋습니다. 즉, 활성 레코드 개체를 만들기 전에 데이터 (조건부 검사, 수학 등)를 사용하여 작업해야하는 경우 필요한 필드에 대해 사용자 지정 변환기를 제공 할 수 있습니다. 예를 들어

http://fastercsv.rubyforge.org/svn/trunk/test/tc_data_converters.rb

에 test_convert_with_custom_code_using_field_info 방법 보면