質問

アクティブなリソースについて簡単な質問があります。ユーザーリソースがある場合、次のような呼び出しを行うと

User.find(1).put(:promote, :position => 'manager')

APIによれば、この呼び出しは/users/1/promote.xml?position=managerに変換されます

私の質問はこれです。 activeresourceは実際にここで2つの呼び出しを行っていますか? findを取得してからそのオブジェクトを置くか、.putを.findに追加するということは、1回の呼び出しを行うことを意味します。そうである場合、.findの唯一の理由は、/ users /:id / promoteの適切なURL形式を提供することですか?

ドキュメントでこれが指定されている場所を見つけることができませんでしたが、2つのサービスコールが行われていると思わせるのは.findですか?

役に立ちましたか?

解決

ActiveResourceがActiveRecordのように機能する場合、「はい」と答えます。次のようなことをする場合

Foo.find(1).update_attributes(:name=>"Bar")

ActiveRecordは最初に選択を行ってオブジェクトを取得し、次にデータベースに更新呼び出しを発行してレコードを変更します。 ActiveResourcesは、オブジェクトを取得してからオブジェクトを更新するために2つのWebサービス呼び出しを発行する同様の方法で機能すると仮定します。

他のヒント

イニシャライザーに以下を入力します:

class ActiveResource::Connection
  #   Creates new Net::HTTP instance for communication with
  #   remote service and resources.
  def http
    http = Net::HTTP.new(@site.host, @site.port)
    http.use_ssl = @site.is_a?(URI::HTTPS)
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl
    http.read_timeout = @timeout if @timeout
    #Here's the addition that allows you to see the output
    http.set_debug_output $stderr
    return http
  end
end

「" http.set_debug_output $ stderr"」を検索" ActiveResource" 'この役立つヒントの元の著者を見つけるために。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top