0
::加載ActiveModel回調訪問屬性我有兩個類:在回調函數
1)的API(ApiClient)負責製作的HTTP請求(GET,PUT,POST,DELETE)。
require 'faraday'
module Assets
class ApiClient
extend ActiveModel::Callbacks
define_model_callbacks :post, :put, :delete
after_post Assets::AuditTrail
after_put Assets::AuditTrail
after_delete Assets::AuditTrail
def initialize(url, username = nil, password = nil)
@connection = Faraday.new(url) do |faraday|
faraday.basic_auth(username, password)
faraday.request :url_encoded # form-encode POST params
faraday.response :logger # log requests to STDOUT
faraday.adapter :net_http # make resusts with Net::HTTP
faraday.use Errors::RaiseError # include custom middleware
end
end
def get(path, parameter = nil)
@connection.get path, parameter
end
def post(path, data, headers = {})
response = @connection.post path, data, headers
run_callbacks :post
return response
end
def put(path, data, headers = {})
response = @connection.put path, data, headers
run_callbacks :put
return response
end
def delete(path)
response = @connection.delete path
run_callbacks :delete
return response
end
end
end
2)審計跟蹤(AuditTrail)負責登錄到數據庫。
module Assets
class AuditTrail
def self.after_post(obj)
puts 'IN THE AFTER POST!!!'
end
def self.after_put(obj)
puts 'IN THE AFTER PUT!!!!'
end
def self.after_delete(obj)
puts 'IN THE AFTER DELETE!!!!'
end
end
end
每次PUT,POST或DELETE請求時我要在數據庫中記錄事務,通過我的跟蹤線索類。我使用ActiveModel :: Callbacks來設置它。
我很好奇我如何在AuditTrail函數中訪問我的函數參數?例如,當我輸入AuditTrail.after_post函數時,有沒有辦法從post函數訪問路徑,數據,標題和響應?