Преобразование CamelCase xml / json в именованные атрибуты ruby ​​с помощью ActiveResource - PullRequest
2 голосов
/ 05 февраля 2010

Я использую 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 и добавить это?

1 Ответ

1 голос
/ 05 февраля 2010

Я не знаю, как быстро изменить способ именования атрибутов ActiveResource, но вы можете реализовать method_missing для доступа к существующим атрибутам с использованием предпочитаемых вами вариантов написания:

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

В качестве альтернативы, вы можете определять методы с альтернативным именем динамически, перебирая attributes.keys и используя define_method, хотя я не уверен, когда в жизненном цикле вашего объекта, вы бы это сделали (конструктор?).

...