Ускоренный синтаксический анализ int или другого в ActiveRecord - PullRequest
0 голосов
/ 19 апреля 2010

В настоящее время я импортирую CSV в элемент activerecord, но не могу проанализировать элементы как, скажем, целые числа или десятичные числа в каждом конкретном случае, используя quickcsv. Я могу выбрать синтаксический анализ всего как int или другого, или все как строки. Мне нужно проанализировать некоторые столбцы как целые, некоторые как десятичные, а некоторые как строки.

Иначе, есть ли способ после того, как я проанализировал все как строки, чтобы преобразовать и обновить отдельные элементы в activerecord в новую форму? Проанализируйте значения в виде строк, затем преобразуйте определенные значения в целые, другие в десятичные и т. Д.?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

Для общего использования Симоне ответ лучше. Тем не менее, если вам нужно что-то сделать с данными (условные проверки, математика и т. Д.) Перед созданием объекта активной записи, вы можете предоставить пользовательские преобразователи только для тех полей, которые вам нужны.

Например, посмотрите на метод test_convert_with_custom_code_using_field_info в http://fastercsv.rubyforge.org/svn/trunk/test/tc_data_converters.rb

0 голосов
/ 19 апреля 2010

Просто предоставьте данные ActiveRecord в виде строки. ActiveRecord знает схему вашей базы данных и знает, как анализировать ввод.

Например, вам не нужно приводить строку к целому числу, когда вы устанавливаете значение для внешнего ключа.

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