내가 3레일 작업 레이크 - 이미
나는 두 개의 CSV 파일이 (gas.csv & elec.csv 레일의 새로운 레이크 작업을 만들려고 해요 존재하지 않는 경우 CSV 파일을 구문 분석 및 가져 오기) 사용 데이터는 SQL 데이터베이스에서 15 분마다 업데이트됩니다. 다음의가있는 CSV의 형식은 (나는이 제어 할 수 없습니다) :
MeterID,RoundedTimeStamp,Value,Register
165,31/01/2012 00:00,1200,0
165,28/02/2012 00:15,1201,0
165,31/03/2012 00:30,1199,0
의 새로운 값으로 매월 업데이트되는 CSV는, 나는 가져올 레이크 가져 오기 작업을 쓰고 싶어 모델의 관련 부분으로 파일, 사용 (월, 일렉트릭, 가스).
require 'csv'
desc "Importing Usage data from CSV file"
task import: :environment do
file = ".../elec.csv"
CSV.foreach(file, headers: true) do |row|
Usage.find_or_create_by_month({
month: row[1],
elec: row[2]
})
end
end
내가 레이크을 실행합니다 : 지금까지 나는 정말 작동하지 않는 ELEC 수입에 대해 다음있어 콘솔에서 가져 오기, 그냥 벌금 ELEC 사용 데이터를 가져옵니다,하지만하지 않습니다 중복을 건너 뜁니다. 중복없이이 파일을 가져올 수있는 방법이 있습니까? 또한 가스 데이터에 대해 동일한 작업을 수행 할 수있는 방법이 있습니까?
참고 : find_or_create보다는 first_or_create를 사용하는 것이 더 바람직하지만 _by_month와는 작동하지 않습니다.
건배! 당신은 Upsert
을 시도 할 수 http://apidock.com/rails/ActiveRecord/Relation/first_or_create
'어디에 (월 : 행 [1]). first_or_create', find_or_create 레일에 사용되지 Methos는 목록에 있어야합니다 4. – Leito
그래, 나는 APIdock에서 그것을 처음 보았다. 그러나 그것은 작동하지 않았다! – KevL