2

ActiveResourceを使用すると、MyObject.find(id)を呼び出すと、「[self.site] / [self.prefix] /:id。[self.format]」が取得されます。ただし、アクセスしているAPIの構成は少し異なります。id.file_typeの代わりに、「[self.site] /:id/[self.suffix]。[self.format]」にアクセスする必要があります。

すなわち:http:// api_path /:id/tool.jsonを取得します

このシナリオでactiveresourceを構成する方法はありますか?私はドキュメントで多くを見つけていません。

4

1 に答える 1

3

ActiveResource::Base.element_pathパスを作成するメソッドは次のとおりです。

def element_path(id, prefix_options = {}, query_options = nil)
  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{collection_name}/#{URI.escape id.to_s}.#{format.extension}#{query_string(query_options)}"
end

element_pathを再定義するクラスを作成します。次のようになります。

class CustomApiPath < ActiveResource::Base
  def element_path(id, prefix_options = {}, query_options = nil)
    prefix_options, query_options = split_options(prefix_options) if query_options.nil?
    "#{prefix(prefix_options)}#{URI.escape id.to_s}/#{collection_name}.#{format.extension}#{query_string(query_options)}"
  end
end

(警告:テストされていません)その後、他のActiveResourceモデルはActiveResource::BaseではなくCustomApiPathから継承します。

于 2011-06-06T21:50:51.597 に答える