2010-02-05 2 views
2

J'utilise ActiveResource pour consommer un service REST. Le xml du service ressemble à:Convertir des attributs nommés CamelCase xml/json en ruby ​​avec ActiveResource

<Person> 
    <FirstName>Kevin</FirstName> 
    <LastName>Berridge</LastName> 
</Person> 

ActiveResource ce parse très bien, mais il utilise les noms verbatim. Ainsi, la classe de modèle ressemblera:

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

je préférerais si cela suivre les conventions de nommage Ruby et ressembler à:

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

Est-ce que ActiveResource ont une façon de le faire? Existe-t-il un moyen de me connecter à ActiveResource et de l'ajouter?

Répondre

1

Je ne sais pas d'un moyen rapide de changer les noms de ActiveResource façon attributs, mais vous pouvez mettre en œuvre method_missing pour accéder aux attributs existants avec vos orthographes préférées:

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

Sinon, vous pourriez être en mesure de définir dynamiquement des méthodes nommées alternativement en itérant attributes.keys et en utilisant define_method, bien que je ne sois pas sûr quand dans le cycle de vie de votre objet vous le feriez (constructeur?).

Questions connexes