저는 이상한 문제가 있습니다. 내 데이터베이스에 10 진수로 저장된 통화가 있습니다. CSV 파일에서 읽고 데이터베이스에 저장할 문자열을 소수로 변환합니다. 데이터베이스를 검사 할 때 값이 올바르게 저장되지 않은 것으로 보입니다. 그러나 대부분의 값이 올바르게 저장되어 있지만 어떤 이유로 1000의 값이 1로 저장되고 2299가 2로 저장되므로 999.99 이상의 숫자에는 분명히 문제가 있습니다.데이터베이스에서 십진수 값을 읽을 때 잘못된 출력이 발생했습니다.
여기def self.up
change_column(:transactions, :in, :decimal, :precision => 8, :scale => 2)
change_column(:transactions, :out, :decimal, :precision => 8, :scale => 2)
end
는 CSV 파일에서 값을 저장하는 데 사용되는 코드입니다 :합니다 (.abs을
def create
data = params[:dump][:file].read
FasterCSV.parse(data, :headers => true) do |row|
transaction = Transaction.new
transaction.date = Date.strptime(row[0], "%d/%m/%Y")
transaction.transaction_type = row[4]
transaction.details = row[3]
if row[7].to_f < 0
transaction.out = row[7].to_d.abs
else
transaction.in = row[7].to_d.abs
end
transaction.save
입니다 밖으로 돈을 값이 단지이기 때문에 다음과 같이
나는 데이터베이스 마이그레이션을 실행 CSV 파일에 음수 값으로 저장).
콘솔을 사용하여 새 트랜잭션을 만들고 1000의 문자열을 변환 할 때 동일한 방법을 사용하여 저장하면이 작동이 잘되며 값은 1000.0으로 저장됩니다.
아무도 왜 이런 생각이 들지 않습니까? 이것이 FasterCSV 문제이지만 나는 가질 수 없지만 CSV 번호가 제대로 읽히지 않는다면 가능하다고 생각합니다. 어떤 도움
감사합니다,
톰
그 제안에 대해 너무나 감사드립니다. 오픈 오피스에서 CSV를 열었을 때 모든 서식이 삭제 되었기 때문에 1000으로 보았고 거기에 쉼표가 있을지도 모른다고 생각하지 않았습니다. –