sql - 在 Rails 中执行 sql 查询时如何访问嵌套的哈希值?
问题描述
带有嵌套哈希的列看起来像这样,我想从订阅列访问语言键
=> #<User:0x00007fc609916ac8
id: "224cc26e-6a66-43a0-96db7d3775ac",
name: "Jack Ryan",
email: "jack@ryan.com",
subscription: {"plan"=>"paid", "language"=>"English", "country"=>"Germany" },
将不胜感激任何帮助。谢谢
我尝试以几种不同的方式访问它,但不断出错
ActionView::Template::Error (PG::UndefinedColumn: ERROR: column users.subscription['language'] does not exist
ActionView::Template::Error (PG::UndefinedColumn: ERROR: column users.subscription.language does not exist
ActionView::Template::Error (PG::UndefinedColumn: ERROR: column users.subscription[:language] does not exist
解决方案
您可以为此使用store_accessor,因此,您可以像这样配置哈希属性(在您的模型中):
store_accessor :subscription, %W(plan language country)
这将为哈希键生成适当的 attr_accessor。
推荐阅读
- database - 数据库缓存和池有什么区别
- r - 将一个数据帧的每一行乘以第二个数据帧的所有行
- c# - 如果我在课堂上引用其他类类型,我的 c# 类是 poco 类吗?
- asp.net-core-3.1 - ASP.NET Core 3.1 在返回响应正文时忽略 System.Text.Json.JsonPropertyName
- mapbox - 在 Mapbox GL JS draw 中显示多边形的长度
- websocket - 使用 JMeter 录制应用程序时出现“WebSocket 握手期间出错:意外响应代码:400”
- java - spring boot中的基本程序
- oracle - 直接将数据作为 CSV 文件获取,而不是从 spring-data-jpa 获取对象列表
- ios - High Sierra (Mac OS 10.14.6):无法构建 gem 原生扩展
- python - 我在哪里可以找到手写损坏数字或浮点数或数字的数据集?