AR Query返回关系而不是预期的对象类型(模型人)

时间:2011-09-26 17:33:47

标签: ruby-on-rails activerecord

查询基于使用limit()或first

返回不同的对象类型

此示例使用limit(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 个答案:

答案 0 :(得分:1)

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

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

另一方面,

first仅返回其先前查询的第一个结果 - 结果数组。这就是为什么你会看到一个单独的PersonCategory对象被返回。