문제

활성 리소스에 대한 빠른 질문이 있습니다. 사용자 리소스가 있으면 전화를 걸 때

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

API에 따르면이 호출 /users/1/promote.xml?position=manager로 변환됩니다.

내 질문은 이것입니다. Activeresource가 실제로 두 번 전화를 걸고 있습니까? Get을 찾은 다음 해당 객체를 착용하거나 .Find에 .PUNTENCE가 단일 호출을한다는 것을 의미합니다. 이것이 그렇다면, .find의 유일한 이유는/users/: id/promote의 적절한 URL 형식을 제공하는 것입니다.

문서에서는 이것이 지정 될 수있는 문서에서 찾을 수 없었지만, 두 개의 서비스 호출이 일어나고 있다고 생각하게 만드는 것은.

도움이 되었습니까?

해결책

activeresource가 activerecord처럼 작동하면 '예'라고 말할 것입니다. 당신이 같은 일을한다면

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

ActiveRecord는 먼저 선택을 수행하여 객체를 가져오고 데이터베이스에 업데이트 호출을 발행하여 레코드를 변경합니다. ActiveResources 기능이 두 개의 웹 서비스 호출을 발행하여 객체를 얻은 다음 객체를 업데이트하는 비슷한 방식으로 기능을 가정합니다.

다른 팁

이탈라이즈에 다음을 넣으십시오.

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