【问题标题】:Convert CamelCase xml/json to ruby named attributes with ActiveResource使用 ActiveResource 将 CamelCase xml/json 转换为 ruby​​ 命名属性
【发布时间】:2010-02-05 17:47:26
【问题描述】:

我正在使用 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 并添加它?

【问题讨论】:

    标签: ruby-on-rails xml activeresource camelcasing


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 2021-01-09
      • 2020-03-12
      • 2021-07-23
      相关资源
      最近更新 更多