Schienen Active Nachrichten
-
08-07-2019 - |
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?
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.