2011-08-03 5 views
0

Ruby on rails noob 여기에.ruby ​​on rails에서 User 객체 찾기

이 질문과 관련된 사용자 필드는 id (prim. key)입니다. 이 질문과 관련된 게시 필드 : id, user_id (fk). 외래 키는 사용자의 ID에 연결된 게시물의 user_id입니다. 다음은 올바른 구문입니까?

def sendMessage 
    #@user = current_user 
    @id = Post.find(params[:id]).user_id 
    @user = User.find(@id) 
    UserMailer.welcome_email(@user).deliver 
    respond_to do |format| 
     format.html { render :nothing => true, :status => :ok } 
    end 
end 

이유 : 아래 코드의 컨텍스트를 볼 수 있습니다

@id = Post.find(params[:id]).user_id 
@user = User.find(@id) 

(이 컨트롤러에/posts_controller.rb) : 나는 현재의 게시물을 게시 한 사용자 개체를 잡아하려면 이메일이 게시물을 만든 사용자에게 전송되지 않기 때문에 묻습니다. 지금, 나는 테스트, 나는이 문제의 두 줄을 주석하고 간단하게 사용하려고하기 때문에이 이메일의 문제가 아니라는 것을 알고

@user = current_user 

을 ... 이것은의 사용자에게 전자 메일을 보냅니다 로그인 (그러나 이것은 내가 원하는 것이 아니다). 사전에

감사합니다,

매트

+1

, 왜 당신이 먼저 시도하고 게시하지? – timaschew

+0

안녕하세요 timaschew, 나는 물건을 정리하기 위해 내 게시물을 편집했습니다. 시험을위한 – Matt

+0

은'render_text (@user) '를 사용하여 사용자 (id)를 렌더링하려고 시도합니다. – timaschew

답변

3
다음과 같이 귀하의 모델을 설정해야

:

class Post < ActiveRecord::Base 

    belongs_to :user 

end 

class User < ActiveRecord::Base 

    has_many :posts 

end 

그런 다음 컨트롤러에서 당신이 할 수 있습니다 :

@post = Post.find(params[:id]) 
@user = @post.user 
+0

+1하지만 같지만 더 빠른 해결책 :) – apneadiving

+0

thx Ant. 이미 모델에 위 코드가 있습니다. 나는 또한 그것을 조금 더 분명하게하기 위해 나의 포스트를 편집했다. 나는 당신의 컨트롤러 코드 (thx)를 시도했지만 아직 이메일이 전송되지 않았다. – Matt

1

에게 당신을 모델에서 적절한 관계를 설정해야합니다.

사용자의 'has_many : posts'와 게시의 'belongs_to : user'가 같아요. 그런 다음

당신이 할 수 있습니다 : 오류가 발생하는 경우

있음이 확인 보이는
@user = Post.find(params[:id]).user 
+0

+1 등을 맞댄 :) – Ant

관련 문제