рельсы активируют исходные сообщения
-
08-07-2019 - |
Вопрос
У меня быстрый вопрос об активном ресурсе. Если у меня есть ресурс пользователя, когда я делаю вызов, как
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;» найти оригинального автора этого полезного совета.