동적 디스패치를 사용하여 ActiveResource에서 상속 한 클래스에 여러 클래스 메서드를 정의하고 있습니다.동적 메서드 (ActiveResource를 사용하는 동적 리소스) 내에서 인스턴스 변수 변경
class Invoice < ActiveResource::Base
self.site = 'http://localhost:8080/'
def self.define(method)
define_singleton_method(method) do |params = {}|
site = self.site
self.site = "#{self.site}/Invoice/#{method.to_s.camelize(:lower)}"
puts "self.site -> #{self.site}"
results = Invoice.all(params: params)
self.site = site
puts "changing self.site back to #{site}"
return results
end
end
define :get_details
define :put_approval
define :get_attachment
define :get_pending_notifications
end
이 그것이 무엇이든 첫 번째 전화 (Invoice.get_details, Invoice.get_pending_notifications ...)을 위해 잘 작동하지만, 항상 두 번째 호출에 실패합니다.
왜 이런 일이 일어나고 있는지 이해하고 싶습니다. 문제를 해결하려면 어떻게해야합니까?
저는 방금 가지고있는 것을 시도했지만 저에게는 효과가없는 것 같습니다. 내가 먼저 호출하는 메서드에 따라 두 번째 호출에서 ActiveResource :: ForbiddenAccess 또는 ActiveResource :: ServerError가 표시됩니다. – Jeremiah