Обслуживание нескольких элементов в одном вызове API в Rails 3 - PullRequest
0 голосов
/ 13 марта 2011

Я разрабатываю API в Rails 3, и у меня возникла следующая проблема. Пользователь получил несколько «ресурсов», таких как телефон, электронная почта, адрес, веб-сайт и род занятий.

Я бы хотел создать ресурс в API, который бы получал все «элементы» пользователей за один вызов. Это возможно? Как это можно сделать?

    @user = User.find(params[:id])

    @phones = @user.phones.where(:privacy => nil)
    @emails = @user.emails.where(:privacy => nil)
    @websites = @user.websites.where(:privacy => nil)
    @addresses = @user.addresses.where(:privacy => nil)
    @occupations = @user.occupations.where(:privacy => nil)

    respond_to do |format|

        format.html { render :text => 'Use either JSON or XML' }
        format.json { render :json => {@phones,@emails}, :only => [:firstname, :lastname, :nickname, :email, :bio] }
        format.xml { render :xml => @phones, :only => [:firstname, :lastname, :nickname, :email, :bio] }

    end

Ответы [ 2 ]

0 голосов
/ 24 июля 2012

Вам лучше создать собственный JSON или XML в качестве вывода.

respond_to do |format|
    format.html # index.html.erb
    format.xml # index.xml.builder
    format.json render :partial => "show.json"
end
0 голосов
/ 13 марта 2011

Я бы предпочел иметь отдельную модель (объект) (без активной записи) для хранения этих данных как одного класса.

Пример:

class APIUser

   attr_accessor : name, phone, web_site etc..

end

тогда я передам все данные вышеупомянутой модели пользователя и выставлю ее как сервис. Как я вижу, таким образом у вас больше контроля над деталями. Я имею в виду, что для API вы можете иметь отдельный слой объектов и выставлять их через контроллеры.

Таким образом, когда вы хотите изменить данные API, вам нужно беспокоиться только о своем объекте API. и то же самое относится к моделям OR

ура

Sameera

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...