我在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
它不能达到我的预期。想法?
答案 0 :(得分:0)
如果您每次都试图随机抓取Idea
,则可以使用更具表现力的Idea.all.sample
。
要获取随机数,您也不一定需要Faker,您可以rand(3) + 1
。
如果round_id
是ideas
表中的一列,则您需要在每次迭代时实际保存模型,以保留您要进行的更改。
一种更快的方法是:
Idea.all.sample(7).each do |idea|
idea.update(round_id: rand(3) + 1)
end
这会抓取7个随机Ideas
,对它们进行迭代,然后在1到3之间分配一个随机round_id。