Гораздо проще переопределить методы доступа _path
, упомянутые в в этом ответе , для каждого отдельного класса, чем для монтирования исправлений в приложении ActiveResource, которое может мешать другим ресурсам или драгоценным камням, которые зависит от ActiveResource.
Просто добавьте методы прямо в ваш класс:
class Contact < ActiveResource::Base
def element_path
super.gsub(/\.xml/, "")
end
def new_element_path
super.gsub(/\.xml/, "")
end
def collection_path
super.gsub(/\.xml/, "")
end
end
Если вы обращаетесь к нескольким ресурсам RESTful в одном и том же API, вы должны определить свой собственный базовый класс, в котором может находиться общая конфигурация. Это гораздо лучшее место для пользовательских _path
методов:
# app/models/api/base.rb
class Api::Base < ActiveResource::Base
self.site = "http://crazy-apis.com"
self.username = "..."
self.password = "..."
self.prefix = "/my-api/"
# Strip .xml extension off generated URLs
def element_path
super.gsub(/\.xml/, "")
end
# def new_element_path...
# def collection_path...
end
# app/models/api/contact.rb
class Api::Contact < Api::Base
end
# app/models/api/payment.rb
class Api::Payment < Api::Base
end
# Usage:
Api::Contact.all() # GET http://crazy-apis.com/my-api/contacts
Api::Payment.new().save # POST http://crazy-apis.com/my-api/payments