Este:
#<ActiveRecord::Relation [#<Model id: 1, Model id: 2 ...>]
é o resultado de chamar
inspect
na consulta e inspect
exibirá apenas as colunas que o modelo conhece. O modelo consultará a tabela para as colunas durante a inicialização para que ele saiba apenas sobre as colunas que estão realmente na tabela. ActiveRecord cria métodos de acesso de coluna dinamicamente usando
method_missing
para que ele possa criar métodos em uma consulta que não sejam colunas na tabela real. Portanto, seus
data
existe, basta pedir pelo nome, por exemplo:Model.select(:id, "json_field -> 'data' as data").map(&:data)
lhe dará os
data
valores.