3
在我的应用程序中,我使用ActiveResource来管理从远程API接收的数据。比方说,我的模型之一叫Account
,它有一个名为settings
的字段,在API中记录为“自由形式的散列”,这意味着它可以存储任何内容。使ActiveResource模型为嵌套对象生成散列
样本简化JSON我会收到来自API:
{
"account": {
"title": "My Account",
"settings": {
"a_random_setting": true,
"another_random_setting": 42,
"a_subconfig_of_sorts": {
"is_deep": true
}
}
}
}
的ActiveResource非常亲切地去一路下跌在JSON最深的嵌套对象,并把它们全部纳入Ruby对象:
my_account.settings # => Account::Settings
my_account.settings.a_subconfig_of_sorts # => Account::Settings::ASubconfigOfSorts
这使得在settings
的内容中查找动态密钥有点困难。实质上,我宁愿将settings
定义为常规散列,而不是为我即时生成的定制嵌套对象。
my_account.settings.class # => Hash
my_account.settings[:a_subconfig_of_sorts] # => {:is_deep => true}
我该如何让ActiveResource做到这一点?我的第一个猜测是通过使用schema
声明,但它似乎只提供了标量类型。