Ruby on rails 在Rails 3中为同一API调用中的多个项提供服务

Ruby on rails 在Rails 3中为同一API调用中的多个项提供服务,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在Rails3中开发一个API,我遇到了以下问题。用户获得了电话、电子邮件、地址、网站和职业等多种资源 我想在API中构建一个资源,在同一个调用中获取所有用户项。这可能吗?如何做到这一点 @user = User.find(params[:id]) @phones = @user.phones.where(:privacy => nil) @emails = @user.emails.where(:privacy => nil) @website

我正在Rails3中开发一个API,我遇到了以下问题。用户获得了电话、电子邮件、地址、网站和职业等多种资源

我想在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

我更希望有一个没有活动记录的单独的modelobject将这些数据作为单个类保存

例:

然后,我将把所有数据提供给上述用户模型,并将其作为服务公开。正如我所看到的,这样你就可以更好地控制细节。我的意思是,对于API,您可以有一个单独的对象层,并通过控制器公开它们

通过这种方式,当您想要更改API数据时,您只需要担心您的API对象。同样的事情也适用于或模型

干杯


sameera

您最好构建自己的json或xml作为输出

respond_to do |format|
    format.html # index.html.erb
    format.xml # index.xml.builder
    format.json render :partial => "show.json"
end

好的,听起来很有趣,我会研究这个。但这不可能是我尝试的方式吗?如何修改代码以在一次调用中提供所有结果?
respond_to do |format|
    format.html # index.html.erb
    format.xml # index.xml.builder
    format.json render :partial => "show.json"
end