Cái này:
#<ActiveRecord::Relation [#<Model id: 1, Model id: 2 ...>]
là kết quả của việc gọi inspect
trên truy vấn và inspect
sẽ chỉ hiển thị các cột mà mô hình biết về nó. Mô hình sẽ truy vấn bảng để tìm các cột trong khi khởi động, do đó nó sẽ chỉ biết về các cột thực sự có trong bảng.
ActiveRecord tạo các phương thức truy cập cột một cách nhanh chóng bằng cách sử dụng method_missing
vì vậy nó có thể tạo các phương thức trong một truy vấn không phải là các cột trong bảng thực tế.
Vì vậy, data
của bạn ở đó, bạn chỉ cần hỏi tên, ví dụ:
Model.select(:id, "json_field -> 'data' as data").map(&:data)
sẽ cung cấp cho bạn data
giá trị.