2011-08-03 9 views
0

Ruby on rails noob here。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):私は、現在のポストを投稿したユーザーオブジェクトを取得したいです私は、電子メールが投稿を作成したユーザーに送信されていないためです。今、私はテストとして、私は、問題の2行をコメントアウトし、単純に使用してみました、ので、これは電子メールの問題ではないことを知っている:

@user = current_user 

を...、これはだユーザーに電子メールを送信しますログインしています(これは私が望むものではありません)。事前に

おかげで、

マット

+1

それはOKに見えるはい、なぜあなたが最初にそれを試してみて、あなたがエラーを取得した場合、それを投稿しませんか? – 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'はUserに、belongs_to:userはPostにあると思います。

次に、あなたが行うことができます:

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

+1あなたに戻る:) – Ant

関連する問題