2015-08-15 2 views
4

Есть вариант конфигурации строения в ActiveResource изменить структуру URL запросаКак изменить запрос структуры URL-адрес в activeresource рубинового самоцвета

, например, когда мой клиент приложения пытаются услуг доступа конкретного пользователя от API, ActiveResource отправка запрос на апи URL в следующей структуре

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

, но вместо этого я хочу, чтобы ActiveResource отправить запрос на апи URL, как это

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

Эти две модели файлов, которые я использую в моих клиентов рельсам applicaiton

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 

Любая помощь, будет значительно

было оценено
+0

вы используете тот же url для двух моделей, shoudln't второй быть другим? правильный URL-адрес определяется принимающим сервером, а именно, какой маршрут вы определяете: – peter

+0

@peter спасибо за ваш ответ, я не знаю, что вы, мужчины, не может быть другим, почему, потому что 'self.site' является атрибут, в котором мы используем назначение базового api url, это не должно быть другим, я использую один api, поэтому второй не должен быть другим. –

+0

хорошо, как ваш сервер знает, какой запрос вы делаете, для пользователя или службы? Я думаю, вам понадобится как минимум 2 маршрута, чтобы обслуживать их обоих, но, эй, у меня нет опыта работы с 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