2016-03-16 63 views
-1

我在軌道控制檯內有這個塊。什麼是循環這個塊的正確方法?

@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 

它不會做我所期望的。思考?

+2

歡迎之間分配各隨機round_id到SO!不幸的是我無法解析你的問題。 :(你能給出更多的細節,說明這段代碼的行爲與你期望的不同嗎? – BroiSatse

+0

什麼是錯誤? – Jeff

+0

我想你需要3行和7列嗎?如果是這樣,那麼你需要兩個循環。所以我們可以提供幫助 – Deep

回答

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

+0

謝謝!這正是我想要做的。我希望我能在發佈之前得出這個結論,但我顯然有更多的學習要做。 –

+1

請注意,'Idea.all.sample'從數據庫中提取所有*'Idea'。這可能會變得昂貴。 – Stefan

+1

這應該好多了=>'rand(1..3)' – 7urkm3n

相關問題