2013-06-28 26 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

相关问题