2011-03-13 74 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