2013-06-28 51 views
0

我有一個叫Node的類。在那個類中,我有一個方法:爲什麼此方法返回活動記錄關係而不是類類型的對象?

def self.random 
    self.order("RANDOM()").limit(1) 
end 

我預計要返回一個節點。事實上,它輸出到軌道控制檯的東西看起來像是一個節點。除了它不是!

n = Node.random 
n.class 

給了我這樣的:

=> ActiveRecord::Relation::ActiveRecord_Relation_Node 
+0

順便說一句,如果我在IRC中發出順序隨機命令,會發生同樣的事情。 – Darby

回答

1

我不知道它的ActiveRecord_Relation_Node部分是一回事,但.limit()返回一個範圍(ActiveRecord::Relation),這樣就可以進一步鏈作用域方法在它上面。如果您希望記錄本身使用.first而不是.limit(1)

+0

真棒。謝謝。我發現這個:http://stackoverflow.com/questions/2752231/random-record-in-activerecord ...回答semanticart .... Model.first(:order =>「RANDOM()」)和它的工作。 這是你的意思嗎? – Darby

+0

這些日子的首選語法是將它們鏈接起來:'Model.order(「RANDOM()」)。first',但是你擁有的同樣有效。 –

+0

謝謝邁克。將更新。 – Darby

相關問題