2015-08-15 105 views
4

是否有一个配置选项中的ActiveResource即时拍摄更改请求URL结构如何更改请求URL结构的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 

这些都是我用我的客户轨两个模型文件应用程序了

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 

任何帮助,将不胜appreciated.Thanks

+0

您使用相同的这两个模型的网址,第二个应该不同吗?正确的网址是由接收服务器定义的,也就是你定义的路由 – peter

+0

@peter感谢你的回复,我不知道你们的第二个人会不会有不同',为什么因为'self.site'是我们用来分配基础api url的属性,这不需要不同,我使用的是单个api,所以第二个不需要不同。 –

+0

好吧,您的服务器如何知道您为用户或服务提出的请求?我认为您至少需要两条路线才能为他们提供服务,但是,嘿,我对ActiveResouce没有经验,所以我可能会错误 – peter

回答

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