使用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
动态定义交替命名的方法,但我不确定在对象的生命周期中何时会这样做(构造函数?)。