2

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

4

1 回答 1

1

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

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

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

于 2010-02-05T19:11:03.030 回答