2011-03-13 87 views
0

我正在Rails 3中开发一个API,并且出现了以下问题。用户获得了几个“资源”,如电话,电子邮件,地址,网站和职业。在Rails 3中为同一个API调用服务多个项目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 

回答

0

我宁愿有一个单独的模型(对象)(无活动记录)将这些数据保存为一个类。

例:

class APIUser 

    attr_accessor : name, phone, web_site etc.. 

end 

然后我将所有的数据馈送到上述用户模型并将其作为一个服务。正如我所看到的那样,你对细节有更多的控制权。我的意思是,对于API你可以有一个单独的对象层并通过控制器公开它们。

通过这种方式,当你想改变API数据时,你只需要担心你的API对象。而同样的事情申请或模型

欢呼

sameera

+0

好吧,听起来有趣,我会研究这个。但是,我不可能这样做呢?我的代码如何修改以便在一次调用中提供所有结果? – 2011-03-13 19:48:28

0

你最好建立自己的JSON或XML作为输出。

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