0

配列データは次のとおりです。

data =  [

        # == DB Seeds == 
            ["name", "Peter", "Pan", "Ulla"],
            ["t_u_a", "4405", "6710", "8010"],
            ["t_u_b", "5590", "5590", "9080"]

]

列名、値、値、値です。

Railsには配列用の優れたcreateメソッドがありますか?

私が書く必要がある代わりに:

    Product.create([{ name: 'Peter', tu_a_a: '4405', tu_a_b: '5590' },

    { name: 'Pan', tu_a_a: '6710', tu_a_b: '5590'  }, 

    { name: 'Ulla', tu_a_a: '8010', tu_a_b: '9080'  }])

アップデート:

[{"name"=>"name", "Peter"=>"Peter", "Pan"=>"Pan", "Ulla"=>"Ulla", nil=>nil}, 

{"name"=>"t_u_a", "Peter"=>"4405", "Pan"=>"6710", "Ulla"=>"8010", nil=>nil}, 

{"name"=>"t_u_b", "Peter"=>"5590", "Pan"=>"5590", "Ulla"=>"9080", nil=>nil}]
4

1 に答える 1

3

ActiveRecord create関数を使用できますが、最初にデータをハッシュの配列として再フォーマットする必要があります。最初の配列が列名である2D配列ではありません。これを行うための簡単な関数があります(これを使用する場合は、テストしていないので、必ずテストしてください)-

def convert_to_hashes(my_array)
    keys = my_array.map {|d| d[0]}
    new_array = []
    count = 0

    (1..my_array[0][0].length-1).each do |values|
        new_hash = {}
        count += 1
       (0..keys.length-1).each do |index|
            new_hash[keys[index]] = my_array[index][count]
        end
        new_array << new_hash
    end

    new_array
end

だからあなたは[your model name].create(convert_to_hashes(my_data))

于 2013-02-19T16:29:32.337 に答える