rails attiva i messaggi di risorse
-
08-07-2019 - |
Domanda
Ho una domanda veloce sulla risorsa attiva. Se ho una risorsa utente, quando faccio una chiamata come
User.find(1).put(:promote, :position => 'manager')
Secondo l'API si traduce in questa chiamata /users/1/promote.xml?position=manager
La mia domanda è questa. Activeresource sta effettivamente effettuando due chiamate qui? trova fare un get, quindi mettere quell'oggetto o aggiungere .put a .find significa che effettua una sola chiamata. In questo caso, l'unica ragione per cui .find è il formato url corretto di / users /: id / promotion ??
Non sono riuscito a trovare nei documenti dove questo potrebbe essere specificato, ma è il .find che mi fa pensare che forse due chiamate di servizio sono in corso?
Soluzione
Se ActiveResource funziona come ActiveRecord, direi "sì". Se fai qualcosa del genere
Foo.find(1).update_attributes(:name=>"Bar")
ActiveRecord effettua prima una selezione per ottenere l'oggetto, quindi invia una chiamata di aggiornamento al database per modificare il record. Presumo che ActiveResources funzioni in modo simile quando emette due chiamate ai servizi Web per ottenere l'oggetto e quindi aggiornarlo.
Altri suggerimenti
Inserisci quanto segue nei tuoi inizializzatori:
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
Cerca '" http.set_debug_output $ stderr " & Quot; ActiveResource "' per trovare l'autore originale di questo utile suggerimento.