Frage

Ich habe eine kurze Frage zu aktiver Ressource. Wenn ich einen Benutzer Ressource haben, wenn ich einen Anruf wie

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

Nach dem api es übersetzt in diesen Aufruf /users/1/promote.xml?position=manager

Meine Frage ist. Ist Active macht tatsächlich zwei Anrufe hier? finden Sie einen get tun, dann auf das Objekt setzen, oder sich auf die anhängenden .put .find bedeuten, dass es nur einen einzigen Anruf macht. Wenn dies so ist, dann ist der einzige Grund für die .find ist das das richtige URL-Format von / Benutzer geben /: id / fördern ??

Ich kann nicht in der Dokumentation finden, wo dies angegeben werden könnte, aber es ist die .find, die ich vielleicht zwei Service-Anrufe macht denken stattfinden?

War es hilfreich?

Lösung

Wenn Active wie Active funktioniert, würde ich sagen ‚Ja‘. Wenn Sie etwas tun, wie

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

Active hat zunächst ein Wählen Sie das Objekt bekommen und dann einen update Aufruf an die Datenbank den Datensatz zu ändern. Ich würde davon ausgehen, dass ActiveResources Funktionen in ähnlicher Weise, wo es gibt zwei Web-Service ruft das Objekt zu erhalten und dann das Objekt aktualisieren.

Andere Tipps

Setzen Sie die folgenden in Ihrem Initialisierer:

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

Search ' "http.set_debug_output $ stderr" "Active"' den ursprünglichen Autor dieses hilfreichen Tipps zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top