0

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

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

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

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

これが指定されている可能性のあるドキュメントで見つけることができませんでしたが、おそらく2つのサービス呼び出しが行われていると思わせるのは.findですか?

4

2 に答える 2

0

ActiveResourceがActiveRecordのように機能する場合、私は「はい」と言います。あなたが次のようなことをするなら

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

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

于 2009-05-07T18:40:49.230 に答える
0

イニシャライザーに次のものを入れます。

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"'を検索して、この役立つヒントの元の作成者を見つけてください。

于 2011-04-01T06:09:19.540 に答える