Question

J'ai une petite question à propos de la ressource active. Si j'ai une ressource utilisateur, quand je fais un appel comme

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

Selon l’API, cet appel est traduit par /users/1/promote.xml?position=manager

Ma question est la suivante. Est-ce que Activeresource passe actuellement deux appels ici? trouver faire un get, puis mettre cet objet, ou bien ajouter .put au .find signifie qu'il ne fait qu'un seul appel. Si tel est le cas, la seule raison pour laquelle le fichier .find a été détecté est de donner le format d’URL approprié de / users /: id / PROMEDREC

.

Je ne pouvais pas trouver dans la documentation où cela pourrait être spécifié, mais c'est le .find qui me fait penser à peut-être que deux appels de service ont lieu?

Était-ce utile?

La solution

Si ActiveResource fonctionne comme ActiveRecord, je dirais "oui". Si vous faites quelque chose comme

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

ActiveRecord effectue d'abord une sélection pour obtenir l'objet, puis émet un appel de mise à jour à la base de données pour modifier l'enregistrement. Je présume que ActiveResources fonctionne de la même manière qu’il lance deux appels de services Web pour obtenir l’objet, puis le mettre à jour.

Autres conseils

Mettez les éléments suivants dans vos initiales:

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

Recherche '" http.set_debug_output $ stderr " "ActiveResource" pour rechercher l’auteur original de cette astuce utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top