使用 ActiveResource 将 CamelCase xml/json 转换为 ruby 命名属性
我正在使用 ActiveResource 来使用 REST 服务。服务中的 xml 如下所示:
<Person>
<FirstName>Kevin</FirstName>
<LastName>Berridge</LastName>
</Person>
ActiveResource 可以很好地解析此内容,但它逐字使用名称。因此模型类将如下所示:
p = Person.find(1)
p.FirstName
p.LastName
我更希望它遵循 Ruby 命名约定并且如下所示:
p = Person.find(1)
p.first_name
p.last_name
ActiveResource 有办法做到这一点吗?有没有办法可以连接到 ActiveResource 并添加它?
I'm using ActiveResource to consume a REST service. The xml from the service looks like:
<Person>
<FirstName>Kevin</FirstName>
<LastName>Berridge</LastName>
</Person>
ActiveResource parses this just fine, but it uses the names verbatim. So the model class will look like:
p = Person.find(1)
p.FirstName
p.LastName
I would much prefer if this would follow the Ruby naming conventions and look like:
p = Person.find(1)
p.first_name
p.last_name
Does ActiveResource have a way to do this? Is there a way I can hook into ActiveResource and add this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道更改 ActiveResource 命名属性的方式的快速方法,但您可以实现
method_missing
来使用您喜欢的拼写访问现有属性:或者,您也许可以定义交替命名的属性通过迭代
attributes.keys
并使用define_method
动态地调用方法,尽管我不确定在对象的生命周期中何时会这样做(构造函数?)。I don't know of a quick way to change the way ActiveResource names attributes, but you can implement
method_missing
to access the existing attributes with your preferred spellings:Alternatively, you might be able to define alternately-named methods dynamically by iterating through
attributes.keys
and usingdefine_method
, though I'm not sure when in your object's life cycle you would do that (constructor?).