1

私はこのようなビット多次元配列を持っています:

[[2, 1], [751, 159], [793, 195], [978, 527], [938, 783], [977, 881], [713, 592, 101], [337, 248, 143], [444, 647, 196], [913, 763, 211], [752, 746, 225], [862, 878, 373], [876, 900, 597], [719, 904, 236, 11], [448, 836, 883, 59], [486, 723, 241, 150], [864, 611, 619, 167], [558, 796, 707, 353], [915, 683, 738, 534], [641, 777, 892, 107, 78], [264, 310, 161, 574, 114], [549, 849, 596, 181, 160], [633, 471, 497, 438, 262], [351, 485, 544, 772, 348], [890, 941, 572, 418, 374], [776, 972, 1001, 729, 379], [595, 898, 989, 771, 454], [84, 514, 914, 571, 442, 19], [335, 97, 689, 314, 879, 20], [869, 828, 802, 859, 553, 34], [298, 134, 564, 614, 411, 62], [175, 579, 490, 399, 479, 72], [382, 830, 215, 691, 624, 85], [922, 840, 657, 917, 436, 95]] 

ご覧のとおり、各サブ配列には2〜6個の値があります。

「Sub」というモデルがあり、db列は「sub1」、「sub2」、「sub3」、「sub4」、「sub5」、「sub6」です。(サブ配列に2つの値しかない場合、sub3-6の値はnullになります)

各サブ配列をdb行に保存する適切な方法は何ですか?

私はこれを試しました:@m=[私が上で述べた大きな配列]

      @m.each do |t|
        Pair.create(:sub1 => t[0], :sub2 => t[1], :sub3 => t[2], :sub4 => t[3], :sub5 => t[4], :sub6 => t[5])
      end

しかし、何らかの理由でこれを行うテーブルを作成します:(「sub1」列のサンプル)

2 2 751 2 751 793 2 751 793 978 2 751 793 978938

そこで何が起こっているのか分かりますか?それぞれを繰り返しますが、毎回もう1行追加します。

これが私のモデルです:

class Pair < ActiveRecord::Base
  attr_accessible :id, :sub1, :sub2, :sub3, :sub4, :sub5, :sub6
end

更新:問題を理解しました...スクリプトの間違った部分にcreateメソッドがあり、それが奇妙な方法で連続して数回実行されていました。みんな、ありがとう!

4

1 に答える 1

4

1 つの方法は、列をシリアル化することです。ここを参照してください: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serializeのテキスト列の配列、ハッシュ、およびその他のマッピング不可能なオブジェクトの保存セクション。

于 2012-11-09T18:58:33.553 に答える