1

Railsの学習を開始し、csvファイルをデータベースにインポートすることができましたが、csvの価格フィールドには、「560,000」のような引用符とカンマが含まれています。

しかし、移行ファイルで価格フィールドをt.integerとして作成し、データを追加すると、価格は560としてインポートされます。では、インポートする前に引用符とカンマを削除するにはどうすればよいですか?ありがとう、アダム

編集:これがrakeファイルです:

require 'csv'    

task :csv_to_properties => [:environment] do 
  CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|

    Property.create!(row.to_hash)
  end
end
4

3 に答える 3

2

次のようなものを試してください:

csvvalue = csvvalue.gsub!(/,/,'').to_i

乾杯!

コードを投稿していただきありがとうございます。私はcsvをハッシュに変換することでトンをしませんが、このようなものはおそらくうまくいくでしょう:

Property.create!(row.to_hash.each_pair{|k,v| row.store(k,v.gsub(/,/,'').to_i)})

かなり醜いですが、おそらくあなたが望むものにかなり近いです。

于 2012-05-17T04:49:30.747 に答える
1

コード例では、価格フィールドがrow要素4にあると想定しています。

CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|
  row[price=4].gsub!(/,/,'')
  Property.create!(row.to_hash)
end

これprice=4は、price要素のインデックス値を文書化するための便利な方法です。priceという変数を作成して値4を割り当て、すぐに配列インデックスとして使用します。

Property.createから!/,/はすでに文字列から整数への変換を処理しているので、空の文字列のコンマを含む正規表現の代わりに置換を実行できます''

于 2012-05-17T05:28:29.933 に答える
0

試す:

"220,000".scan(/\d+/).join().to_i
于 2012-05-17T06:02:16.033 に答える