如何在activeresource ruby​​ gem中更改请求url结构

时间:2015-08-15 12:56:17

标签: ruby-on-rails ruby api rest activeresource

ActiveResource中是否有可用的配置选项来更改请求网址结构

例如当我的客户端应用程序尝试从api访问特定用户的服务时,ActiveResource在以下结构中向api url发送请求

http://localhost:3000/api/v1/services.json?user_id=1

但我想让ActiveResource向这样的api url发送请求

http://localhost:3000/api/v1/users/1/services

这些是我在客户端rails应用程序中使用的两个模型文件

user.rb

 class User < ActiveResource::Base 
   self.site = "http://localhost:3001/api/v1"
   has_many :services
 end

service.rb

 class Service < ActiveResource::Base
   self.site = "http://localhost:3001/api/v1"
   belongs_to :user 
 end

任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

使用这些模型:

 class User < ActiveResource::Base 
   self.site = "http://localhost:3001/api/v1"
   has_many :services
 end

 class Service < ActiveResource::Base
   self.site = "http://localhost:3001/api/v1"
   belongs_to :user 
 end

ActiveResource应按以下方式发出请求:

user = User.find(1)      # GET http://localhost:3001/api/v1/users/1.json
services = user.services # GET http://localhost:3001/api/v1/users/1/services.json

假设您的ActiveResource中有更多选项,您可以考虑使用类似的东西:

 class Resource < ActiveResource::Base 
   self.site = "http://localhost:3001/api/v1"
 end

 class User < Resource 
   has_many :services
 end

 class Service < Resource
   belongs_to :user 
 end