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て使用することにより、代わりに名前が付けられたメソッドを動的に定義できる場合があります。define_method

于 2010-02-05T19:11:03.030 に答える