2015-08-15 121 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