【发布时间】:2021-02-21 20:00:54
【问题描述】:
我有一个Review 模型,其中包含一个字段answer。 answer 是一个简单的哈希。编辑:answer 在数据库中存储为jsonb。
create_table "reviews", force: :cascade do |t|
t.jsonb "answer", default: {}
end
Review 模型的字段如下:
id: 1,
venue_id: 1,
answer:
{
"loved_subject": "atmosphere",
"hated_subject": "service"
},
...
我想获取所有 answer[:loved_subject] 等于 "atmosphere" 的评论
到目前为止,我已经尝试了以下变体:
Review.where(answer: { loved_subject: "atmosphere" })
它不会出错,但它只返回一个空数组。我知道 100% 确实存在 loved_subject 确实是 "atmosphere" 的条目,所以很明显我的查询写错了。
我将如何写出这个查询?
【问题讨论】:
-
答案是如何存储在数据库中的?
-
@BenStephens 答案以
jsonb形式存储在数据库中。create_table "reviews", force: :cascade do |t| t.jsonb "answer", default: {}
标签: ruby-on-rails ruby postgresql activerecord