درابزون الرسائل activeresource
-
08-07-2019 - |
سؤال
ولدي سؤال سريع حول الموارد النشط. إذا كان لدي مورد المستخدم، عندما أفعل مكالمة مثل
User.find(1).put(:promote, :position => 'manager')
ووفقا للالمعهد فإنه يترجم إلى هذا /users/1/promote.xml؟position=manager دعوة
وسؤالي هو هذا. وactiveresource في الواقع جعل مكالمتين هنا؟ تجد القيام الحصول عليها، ثم وضع على هذا الكائن، أو لا إلحاق. وضع ل.find يعني أنه يجعل من مجرد مكالمة واحدة. إذا كان الأمر كذلك، فإن السبب الوحيد ل.find هو إعطاء شكل رابط السليم لل/ المستخدمين /: معرف / تعزيز ؟؟
وأنا لا يمكن أن تجد في مستندات حيث يمكن تحديد ذلك، ولكن هذا .find أن يجعلني أفكر ربما مكالمتين خدمة تجري؟
المحلول
وإذا كان يعمل ActiveResource مثل أكتيفيريكورد، وأود أن أقول "نعم". إذا كنت تفعل شيئا مثل
Foo.find(1).update_attributes(:name=>"Bar")
وأكتيفيريكورد أولا يفعل مختارة للحصول على الكائن ومن ثم يصدر نداء تحديث قاعدة البيانات لتغيير السجل. وأود أن نفترض أن ActiveResources الوظائف بطريقة مماثلة حيث تقوم بإصدار اثنين من الخدمات على شبكة الإنترنت تدعو إلى الحصول على الكائن ومن ثم تحديث الكائن.
نصائح أخرى
ضع ما يلي في intializers الخاص بك:
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 $ ستدير" "ActiveResource" "للبحث عن المؤلف الأصلي من هذا غيض من المفيد.