我设置了一个非常简单的种子文件来填充模型
year_group_array = ['Reception', 'Year 1', 'Year 2', 'Year 3', 'Year 4', 'Year 5', 'Year 6']
6.times {
year_group = YearGroup.create({
name: year_group_array.sample
})
}
这将确保数组中的所有项都被填充但不是以任何顺序填充(理想情况下我希望条目按它们在数组中出现的顺序)并且我也很难编码循环的次数要运行,我怎么能让它更具动态性,以便在数组中没有剩余项目时停止?
我只是想让这个表现更好一些,所以如果我将来向数组添加任何东西,我就不必计算数组中的项目数并设置迭代值
答案 0 :(得分:1)
将原始数组值绑定到输出的一种方法是枚举原始数组。
year_group_array = ['Reception', 'Year 1', 'Year 2', 'Year 3', 'Year 4', 'Year 5', 'Year 6']
year_group_array[0..5].each { |sample| YearGroup.create(name: sample) }
如果你必须使用随机值:
LIMIT = 6
source = year_group_array[0..LIMIT].dup
year_group_array[0..LIMIT].each { |sample| YearGroup.create(name: source.delete(rand(LIMIT))) }
答案 1 :(得分:0)
我相信这应该是答案。一个非常简单的方法来自我。
year_group_array = ['Reception', 'Year 1', 'Year 2', 'Year 3', 'Year 4', 'Year 5', 'Year 6']
year_group_array.shuffle.each do |year|
year_group = YearGroup.create({
name: year
})
end
所以Array #shuffle会做到这一点。它将随机化集合中对象的索引/位置,并且Collection#将继续将它们收集到一个块中并按顺序创建记录并继续添加记录,除非创建了所有记录。