Представьте, что у меня есть таблица с именем books
и столбец типа json
с именем misc
, в который были сохранены некоторые другие данные. Используя Rails / AREL, я бы хотел извлечь из всех книг только id
и количество страниц (num_pages
).
В psql
Я могу сделать следующее:
SELECT id, misc->'num_pages' FROM books ;
id | ?column?
-------+---------------
23562 | "220"
22188 | "355"
(Примечание. Приведенный выше запрос дает те же результаты с -->
, что и с ->
).
Я ожидал, что это сработает:
pry> Book.select("id, misc->>'num_pages'")
Book Load(1.7ms) SELECT id, etc-->'num_pages' FROM "books"
Book Load(1.5ms) SELECT id, etc-->'num_pages' FROM "books"
=> #<Book::ActiveRecord_Relation:0x3ff7e934d8f4>
pry> Book.select("id, misc->'num_pages'")
Book Load(1.1ms) SELECT id, etc->'num_pages' FROM "books"
=> [#<Book:0x00007fefd3c11a68 id: 23562>, #<Book:0x00007fefd3c116a8 id: 22188>]
... когда я удалить часть ->'num_pages'
, она возвращает все поле misc
(так что я знаю, что почти работает):
pry> Book.select("id, misc")
Book Load(0.9ms) SELECT id, etc FROM "books"
=> [#<Book:0x00007fefe4e99fb8
id: 23562,
etc:
{"num_pages"=>"220",
...