2011-05-03 53 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