循环遍历此块的正确方法是什么?

时间:2016-03-16 15:02:40

标签: ruby-on-rails ruby

我在rails console中有这个块。

@idea = Idea.find_by(rand(1...Idea.count))
@roundid = Faker::Number.between(1, 3)
@idea.round_id = @roundid

我正在尝试更新七个数据库行。我使用了下面的代码。

7.times do
 @idea = Idea.find_by(rand(1...Idea.count))
 @roundid = Faker::Number.between(1, 3)
 @idea.round_id = @roundid
end

它不能达到我的预期。想法?

1 个答案:

答案 0 :(得分:0)

如果您每次都试图随机抓取Idea,则可以使用更具表现力的Idea.all.sample

要获取随机数,您也不一定需要Faker,您可以rand(3) + 1

如果round_idideas表中的一列,则您需要在每次迭代时实际保存模型,以保留您要进行的更改。

一种更快的方法是:

Idea.all.sample(7).each do |idea|
   idea.update(round_id: rand(3) + 1)
end

这会抓取7个随机Ideas,对它们进行迭代,然后在1到3之间分配一个随机round_id。

相关问题