AR-запрос, возвращающий отношение вместо ожидаемого типа объекта (модель персонажа) - PullRequest
0 голосов
/ 26 сентября 2011

Запросы, возвращающие разные типы объектов, основанные на использовании limit () или сначала

В этом примере используется 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 Ответ

1 голос
/ 26 сентября 2011

limit возвращает ограниченный набор результатов.В вашем случае он возвращает то, что по сути является массивом PersonCategory объектов, даже если вы указываете только один объект с limit(1).

Например, вызов PersonCategory.limit(15) вернет первые 15 PersonCategory элементов в вашей базе данных.

first, с другой стороны, возвращает только первый результат предыдущего запроса- не массив результатов.Вот почему вы увидите, как возвращается отдельный объект PersonCategory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...