Вы видите идентификаторы, потому что inspect
не идеально в ActiveRecord.
Вы не видите сумму оценок, потому что inspect
не идеально в ActiveRecord.
Если вы добавите AS
к вашему select
:
@books = Book.select("city, sum(rating) AS rating_sum").group("city")
# => #<ActiveRecord::Relation [#<Book id: nil, city: "barcelona">, #<Book id: nil, city: "madrid">]>
@books.first.rating_sum
# => 11
, вы сможете вызвать .rating_sum
для каждого из возвращенных элементов, но вы все равно не увидите сумму в вашемконсоль при проверке элемента.
В этом случае вы также можете получить доступ к сумме, не используя AS
, вызвав .sum
для ваших результатов,
@books.first.sum
, но как только ваш запрос получитболее сложный, вам нужно будет явно указать имена атрибутов, используя AS
в вашем запросе.
Как вы, наверное, заметили, идентификаторы, которые вы видите, являются нулевыми, потому что inspect
для ActiveRecord всегдаотображает идентификатор модели, и так как ваш запрос не вернул его, ему ничего не назначено.