我正在开发一个Rails 3 API,在这个API中,我得到了一个名为users,messages和contacts的表。联系表由两个主要字段(user_id和friend_id)组成。消息表由两个主要列(user_id,message)
组成我想获取属于用户联系人的所有邮件。使用下面的代码可以正常工作。我需要的是将用户数据包含在每个消息输出中。
这是我在消息控制器中的代码:
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
如何做到这一点?
答案 0 :(得分:1)
假设消息属于用户,您应该能够这样做:
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