У меня есть специальная конструкция массива и хэш, как этотРубин построить хэш в хэш в массиве
[
{ Qid: '3', QName: 'Test1', filled_out: [
{ Id: '234', Date: '25.04.2015 23:14:15', Score: rand(10..100)},
{ Id: '4587', Date: '27.04.2015 11:13:15', Score: rand(10..100)},
{ Id: '33254', Date: '23.05.2015 09:19:17', Score: rand(10..100)}
]
},
{
Qid: '3', QName: 'Test2', filled_out: [
{ Id: '2478', Date: '25.04.2015 23:14:15', Score: rand(10..100) },
{ Id: '12357', Date: '27.04.2015 11:13:15', Score: rand(10..100) },
{ Id: '9654', Date: '23.05.2015 09:19:17', Score: rand(10..100) }
]
},
{
Qid: '3', QName: 'Test3', filled_out: [
{ Id: '47854', Date: '25.04.2015 23:14:15', Score: rand(10..100) },
{ Id: '12365', Date: '27.04.2015 11:13:15', Score: rand(10..100) },
{ Id: '77788547', Date: '23.05.2015 09:19:17', Score: rand(10..100) }
]
},
{
Qid: '3', QName: 'Test4', filled_out: [
{ Id: '1214', Date: '25.04.2015 23:14:15', Score: rand(10..100) },
{ Id: '5698', Date: '27.04.2015 11:13:15', Score: rand(10..100)},
{ Id: '1906', Date: '23.05.2015 09:19:17', Score: rand(10..100) }
]
}
]
Эта конструкция является статическим кодом. Теперь я хочу попытаться создать эту конструкцию с помощью рандомизатора.
Я попробовал этот код, но он не работает
@arr = Array.new
rand(1..12).times do |i|
@v = Hash.new
@v[:Qid] = rand(10..1000)
@v[:QName] = 'Test'
@v[:filled_out] = nil
rand(1..8).times do |k|
@q = Hash.new
@q[:Id] = rand(10..1000)
@q[:Date] = '25.04.2015 23:14:15'
@q[:Score] = rand(1..100)
@v[:filled_out] << @q
end
@arr << @v
end
Так что случилось? Wht это лучший способ понять, что
Рубин говорит:
"undefined method `<<' for nil:NilClass"
Я вижу два '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. –
Я думаю, что есть опечатка в 'rand (1.8)' too –
Я не вижу метода 'each'. – orde