2012-12-08 58 views
0

當我嘗試這樣做:`Model.first(:爲了=> '隨機()')'總是返回相同的對象

questions = Array.new 
2.times do 
    question = Question.first(:order => 'random()') 
    questions << question 
end 

並檢查元件:

raise questions.inspect 

它返回一個包含兩個相同對象的數組,但我期望我的questions數組中有兩個不同的對象。我做錯了什麼?

+1

該錯誤可能是在'Question.first' -apparently它的實現不要像你期望的那樣創建一個新的「問題」。 – Cubic

+0

我懷疑你在調用'Question.first'時會返回一個對象,它只是保留查詢以便以後檢索。 –

+0

您可以參考此鏈接獲取隨機記錄:http://stackoverflow.com/questions/2752231/random-record-in-activerecord – 2012-12-08 19:55:56

回答

0

你可以嘗試創建一個返回隨機記錄上的問題的方法:

class Question < ActiveRecord::Base 

... 

    def self.random 
    if (c = count) != 0 
     find(:first, :offset =>rand(c)) 
    end 
    end 

... 

end 

然後使用:

questions = Array.new 
2.times do 
    question = Question.random 
    questions << question 
end 
相關問題