2011-05-03 3 views
0

Rails 3 API를 개발 중이며이 API에는 사용자, 메시지 및 연락처라는 테이블이 있습니다. 연락처 테이블은 두 개의 기본 필드 (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 

방법이 작업을 수행 할 수 있습니다

이 메시지 컨트롤러에 내 코드는? 사용자 belongs_to 메시지가, 당신은 단지이 할 수 있어야한다고 가정

답변

1

:

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

: 특정 사용자 필드를 포함

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 

대상을, 사용자 정의 메소드를 정의 할 수 있습니다 감사합니다 아름답게, 고마워! 하나의 작은 문제가 있습니다. 나는 오직 사용자의 성 (firstname)과 성 (lastname)만을 반환하고자한다. 지금 나는 또한 암호, 전자 우편을 얻는다. 어떻게해야합니까? –

+0

내 편집을 참조하십시오 : 맞춤 메소드 추가. –

+0

Brilliant. 정말 고마워. 너는 나의 하루를 구했다! –