Rails アプリケーションを開発しており、ActiveResource を使用してリクエストを REST サーバーに送信したいと考えています。サーバーの実際の URL サイトは次のとおりです。
http://foo.com/api-v1.0
ポイントは、サーバーへの通信ごとに、Rails アプリケーション コンテキストで現在のロケールを渡したいということです。したがって、有効な URL 呼び出しは次のとおりです。
等
したがって、私は貧弱な ActiveResource ドキュメントに従っており、リソース クラスを次のように定義しています。
class MyClass < ActiveResource::Base
self.site = "http://foo.com/api-v1.0/:locale
end
そして、私のアプリケーションコントローラーでは、たとえば、すべての人を取得するときに、次のようなものがあります。
MyClass.all(:params => {:locale => I18n.locale})
これは正常に動作します。
問題は、コントローラーのコードが非常に冗長になることです。:params => {:locale => I18n.locale}
アクセスしているすべてのリソースを繰り返し渡す必要があります。
それを避けるために、ActiveResource::Base から派生する基本クラスを作成し、:locale を設定できるようにすべてのリソース アクセス メソッドをオーバーライドすることにしました。したがって、コードは次のようになります。
class MyBaseClass < ActiveResource::Base
self.site = "http://foo.com/api-v1.0/:locale"
def self.all
super(:params => {:locale => I18n.locale})
end
end
class MyClass < MyBaseClass
end
そして私のアプリケーションコントローラーで:
MyClass.all
で十分です。
ただし、これにより、 は非常に冗長で複雑になりMyBaseClass
ます。ActiveResource::Base
this を渡すには、 のすべてのメソッドをオーバーライドする必要があります:locale
。
どうすればより効率的にそれを行うことができますか?
前もって感謝します
パナヨティス