首页 > 解决方案 > 在 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

标签: sqlruby-on-railsjoin

解决方案


您可以为此使用store_accessor,因此,您可以像这样配置哈希属性(在您的模型中):

store_accessor :subscription, %W(plan language country)

这将为哈希键生成适当的 attr_accessor。


推荐阅读