2011-07-21 15 views

答えて

2

(列名のuser_idを持つ必要があります)モデルのポストを定義

model Post < ActiveRecord::Base 
    belongs_to :user 
end 
ユーザーモデルで

model User < ActiveRecord::Base 
    has_many :posts 
end 

ユーザーの投稿をすべて次のように取得する

User.find(id).posts 
+0

私がdeviseを使用している場合は、post_controllerまたはpostモデルのどこかに 'current_user'ヘルパーを使用する必要がありますか?私はuser_controllerの外にコントローラを使用しているので、現在のセッションまたはユーザをどこかに指定する必要があるかどうかを私が尋ねていると思いますか? – stewart715

+0

私はdeviseについてはわかりませんが、あなたがcurrent_userまたは特定のユーザを持っている場合は、@ user.postsを実行できます。 – naren

+0

私はあなたに現在ログインしているユーザ(そのヘルパーはcurrent_userです)を提供するヘルパーを持っています。 belongs_to:userとhas_many:postsを追加すると、ユーザーのIDを取得してポストのuser_id列に投げ込まれていないようです。だから私はそれが現在のユーザーのIDを取る必要があることを見るためにそれを得るために何か必要があるかどうか疑問に思っています – stewart715

0

かなりのアプローチがありますが、John Nunemakerのuser_stamp gemはかなり簡単で実行しやすいです。

https://github.com/jnunemaker/user_stamp

だけで、あなたのテーブルにあなたのApplicationControllerに内の1行をcreator_idとupdater_idを追加し、それが残りの部分を行います!あなたが ことができるようにUSER_IDは、Userモデルにforiegn鍵となる上で定義された団体と

0

rails associationsのこのガイドに従うことで、お互いにモデルを関連付けることができます。

class Post < ActiveRecord::Base 
end 

class User < ActiveRecord::Base 
    has_many :posts 
end 

あなたの投稿テーブルにuser_idという名前の列があることを確認するだけでよいでしょう。あなたのユーザテーブルがユーザと呼ばれると仮定します。これは、ユーザーと投稿の間の1対多関連を設定します。ユーザーインスタンスから、user.postsを実行して、そのユーザーの関連する投稿のリストを取得できます。

ガイドはこの物を説明するのにはるかに優れていて、今のところ必要でない部分でさえ、全体を読む価値があります。

+0

あなたは忘れて 'belongs_to:user' – Mischa

+0

ガイドには頻繁に使用されていると書かれていますが、明示的に必須とは言われていません。 – jaydel

+1

'user.posts'だけが必要なのであれば、あなたはそれを必要としませんが、' post.user'を使いたいと思っています。 – Mischa

関連する問題