代码之家  ›  专栏  ›  技术社区  ›  Schroedinger

fastercsv解析到int或其他ActiveRecord中

  •  0
  • Schroedinger  · 技术社区  · 14 年前

    我目前正在将csv导入ActiveRecord元素中,但不能选择使用fastercsv逐个分析元素,如int或decimals。我可以选择将所有内容解析为int或其他类型,或者全部解析为字符串。我需要将一些列解析为int,一些解析为小数,一些解析为字符串。

    否则,在我将所有内容解析为字符串后,是否有一种方法可以将ActiveRecord中的单个元素转换和更新为新表单?比如将值解析为字符串,然后将某些值转换为int,其他值转换为decs,等等?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Simone Carletti    14 年前

    只需将数据作为字符串提供给ActiveRecord。 ActiveRecord知道您的数据库模式并知道如何解析输入。

    例如,在设置外键的值时,不需要将字符串强制转换为整数。

    r = Record.create :relation_id => "3"
    r.relation_id
    # => 3
    # note the difference between "3" and 3
    
        2
  •  0
  •   Chris    14 年前

    一般来说,西蒙尼的回答更好。也就是说,如果在生成活动的记录对象之前需要对数据(条件检查、数学等)做些什么,则可以仅为所需的字段提供自定义转换器。

    例如,请查看中的test_convert_with_custom_code_using_field_info method http://fastercsv.rubyforge.org/svn/trunk/test/tc_data_converters.rb