2011-09-26 16 views
0

查询返回基于使用限制()或第一不同的对象类型AR查询返回的关系,而不是

此示例使用限制(1),并且不产生预期的对象类型的预期对象类型(模型人) :

c = PersonCategory.where("category = ?", "Crown").limit(1) ## 
=> PersonCategory Load (0.3ms) SELECT `person_categories`.* FROM `person_categories` WHERE (category = 'Crown') LIMIT 1 
=> [#<PersonCategory id: 1, category: "Crown">] ##### 
c.class 
=> ActiveRecord::Relation 

本例使用第一和得到所需的输出:

c = PersonCategory.where("category = ?", "Crown").first ## 
=> PersonCategory Load (0.4ms) SELECT `person_categories`.* FROM `person_categories` WHERE (category = 'Crown') LIMIT 1 
=> #<PersonCategory id: 1, category: "Crown"> 
c.class 
=> PersonCategory(id: integer, category: string) ##### 
ruby-1.9.2-p180 :034 > 

回答

1

limit返回一组有限的结果。在你的情况下,即使你只指定一个对象为limit(1),它也会返回基本上为PersonCategory对象的数组。

例如,调用PersonCategory.limit(15)会返回数据库中的前15个项目PersonCategory

first另一方面,只返回其前面查询的第一个结果 - 而不是结果数组。这就是为什么你会看到个人返回对象PersonCategory

+0

当然!!!谢谢。 –

相关问题