Вопрос

У меня быстрый вопрос об активном ресурсе. Если у меня есть ресурс пользователя, когда я делаю вызов, как

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

Согласно API это переводится в этот вызов /users/1/promote.xml?position=manager

Мой вопрос такой. Activeresource фактически делает два вызова здесь? выполнение поиска get, затем добавление этого объекта или добавление .put к .find означает, что он просто выполняет один вызов. Если это так, то единственной причиной .find является указание правильного формата URL-адреса / users /: id / продвижение ??

Я не смог найти в документах, где это может быть указано, но именно .find заставляет меня думать, что, возможно, происходит два вызова службы?

Это было полезно?

Решение

Если 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 " & Quot; ActiveResource & Quot;» найти оригинального автора этого полезного совета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top