2011-05-03 52 views
0

我正在開發Rails 3 API,並在此API中獲取了名爲用戶,消息和聯繫人的表。聯繫人表由兩個主要字段(user_id和friend_id)組成。消息表由兩個主要列(user_id,消息)組成Rails。將用戶對象注入輸出上的消息對象

我想獲取屬於用戶聯繫人的所有消息。這工作正常使用下面的代碼。我需要的是將用戶數據包含在每個消息輸出中。

這是我在消息控制器代碼:

def profile_updates 
    @contacts = current_user.contacts 
    @messages = Array.new 
    @contacts.each do |contact| 
    user = User.find(contact.friend_id) 
    user.messages.each do |message| 
     @messages << message 
    end 
    end 
    respond_to do |format| 
    format.html { render :text => 'Use either JSON or XML' } 
    format.json { render :json => @messages} 
    format.xml { render :xml => @messages} 
    end 
end 

如何才能做到這一點?

回答

1

假設belongs_to的用戶的郵件,你應該能夠做到這一點:

respond_to do |format| 
    format.html { render :text => 'Use either JSON or XML' } 
    format.json { render :json => @messages.to_json(:include => :user) } 
    format.xml { render :xml => @messages.to_json(:include => :user) } 
end 

要想僅包括特定用戶時,你可能要定義一個自定義的方法:

class Message 
    def user_info 
    {:first_name => user.first_name, :last_name => user.last_name} 
    end 
end 

respond_to do |format| 
    format.html { render :text => 'Use either JSON or XML' } 
    format.json { render :json => @messages.to_json(:methods => :user_info) } 
    format.xml { render :xml => @messages.to_json(:methods => :user_info) } 
end 
+0

感謝精湛的工作,謝謝!只有一個小問題。我只想返回用戶的名字和姓氏。現在我也收到密碼,電子郵件等。我怎樣才能做到這一點? – 2011-05-03 13:42:10

+0

看我的編輯重新:添加一個自定義的方法。 – 2011-05-03 13:55:42

+0

輝煌。非常感謝你dmarkow。你救了我的一天! – 2011-05-03 14:00:45