22

サードパーティの API からオブジェクトを取得し、それらを type のサブクラスであるオブジェクトに構築するクラス API がありますAPIObjectAPIObjectサブクラスは、プル元の API のオブジェクト名と一致します。

User < APIObject
Account < APIObject

標準の Rails アクセサーを使用してオブジェクトをプルできる APIObject のクラス メソッドを定義したいと思います。

user = User.find id

この呼び出しを次のような API 呼び出しに変換するメソッドが必要です。

API::User::findById id

APIObject サブクラス ( User)の名前にアクセスし、self.class.nameそれを使用して定数 ( API::User) を呼び出したいのですが、うまくいかないことがわかってAPI::self.class.nameいます。サブクラスごとにこのメソッドを何度も書き直すことができましたが、それを行わなくても可能であるように思われます。提案?

4

1 に答える 1

44

を探していると思いますconst_get。おそらく次のようなものです:

def self.find(id)
  API.const_get(self.name).find_by_id(id)
end

self.name(これはすでにクラスのコンテキストにあり、self.class.nameただになるので、必要なのは だけであることに注意してくださいClass)。

于 2013-09-11T23:46:27.060 に答える