查询基于使用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 >
答案 0 :(得分:1)
limit
会返回一组有限的结果。在您的情况下,即使您只使用PersonCategory
指定一个对象,它也会返回基本上是limit(1)
个对象的数组。
例如,调用PersonCategory.limit(15)
将返回数据库中的前15个PersonCategory
项。
first
仅返回其先前查询的第一个结果 - 不结果数组。这就是为什么你会看到一个单独的PersonCategory
对象被返回。