使用ActiveResource将CamelCase xml / json转换为ruby命名属性

我正在使用ActiveResource来使用REST服务。 服务中的xml如下所示:

 Kevin Berridge  

ActiveResource解析这个很好,但它逐字地使用名称。 所以模型类看起来像:

 p = Person.find(1) p.FirstName p.LastName 

我更喜欢这是否符合Ruby命名约定,如下所示:

 p = Person.find(1) p.first_name p.last_name 

ActiveResource有办法做到这一点吗? 有没有办法可以挂钩到ActiveResource并添加它?

我不知道如何快速更改ActiveResource命名属性的方式,但您可以使用您的首选拼写实现method_missing来访问现有属性:

 def method_missing(name, *args, &block) send name.to_s.classify.to_sym, *args, &block end 

或者,您可以通过遍历attributes.keys并使用define_method动态定义交替命名的方法,但我不确定在对象的生命周期中何时会这样做(构造函数?)。