0

現在、CSVをactiverecord要素にインポートしていますが、fastercsvを使用して、ケースバイケースで要素をintまたはdecimalsなどとして解析することを選択できません。すべてをintまたはその他として解析するか、すべてを文字列として解析するかを選択できます。一部の列をintとして、一部を10進数として、一部を文字列として解析する必要があります。

それ以外の場合、すべてを文字列として解析した後、activerecordの個々の要素を新しい形式に変換および更新する方法はありますか?値を文字列として解析し、特定の値をintに変換し、他の値をdecsに変換するとしますか?

4

2 に答える 2

0

データを文字列としてActiveRecordに提供するだけです。ActiveRecordはデータベーススキーマを認識しており、入力を解析する方法を認識しています。

たとえば、外部キーの値を設定するときに、文字列を整数にキャストする必要はありません。

r = Record.create :relation_id => "3"
r.relation_id
# => 3
# note the difference between "3" and 3
于 2010-04-19T10:05:55.020 に答える
0

一般的な使用には、Simoneの答えの方が優れています。とは言うものの、アクティブレコードオブジェクトを作成する前にデータで何か(条件付きチェック、計算など)を行う必要がある場合は、必要なフィールドだけにカスタムコンバーターを提供できます。

例として、http://fastercsv.rubyforge.org/svn/trunk/test/tc_data_converters.rbのtest_convert_with_custom_code_using_field_infoメソッドを見て ください。

于 2010-04-19T16:25:07.053 に答える