ruby-on-rails - 如何使用点符号访问 Chewy 结果?
问题描述
我正在使用Toptal 的 Chewy gem来连接和查询我的 Elasticsearch,就像 ODM 一样。
我将Chewy与 Elasticsearch 6、Ruby on Rails 5.2 和 Active Record 一起使用。
我已经像这样定义了我的索引:
class OrdersIndex < Chewy::Index
define_type Order.includes(:customer) do
field :id, type: "keyword"
field :customer do
field :id, type: "keyword"
field :name, type: "text"
field :email, type: "keyword"
end
end
end
我的模型:
class Order < ApplicationRecord
belongs_to :customer
end
这里的问题是,当我使用 Chewy 执行任何查询时,客户数据会被反序列化为哈希而不是对象,并且我不能使用点符号来访问嵌套数据。
results = OrdersIndex.query(query_string: { query: "test" })
results.first.id
# => "594d8e8b2cc640bb78bd115ae644637a1cc84dd460be6f69"
results.first.customer.name
# => NoMethodError: undefined method `name' for #<Hash:0x000000000931d928>
results.first.customer["name"]
# => "Frederique Schaefer"
如何使用点符号 ( result.customer.name
) 访问嵌套关联?或者反序列化对象(例如结构)中的嵌套数据,这允许我使用点表示法?
解决方案
推荐阅读
- c# - CS1002 ; 预期的。我有一个分号
- javascript - 如何使用 typescript 和 node 从依赖项中指定类型?
- ssl - 浏览器是否为 WebRTC 会话生成自签名证书?
- php - Wordpress 更改 ShortCodes 的输出 html
- google-sheets - 将公式转换为数组公式问题
- smarty - Cs-cart - 如何将功能从添加到购物车捆绑到添加到购物车、愿望清单和通知
- python - 为什么我只得到 Nosuchelement - Selenium 无头错误?
- gitlab - 如何在 gitlab 中获取时间表描述?
- c# - EF Core 脚手架与 Oracle 自治数据库
- mysql - 错误代码:3780。在外键约束“cal_ibfk_1”中引用列“deal_id”和引用列“d_id”不兼容