2013-03-13 118 views
0

我有一個留言板。 A User可以創建一個新的Discussion。 A User也可以創建一個新的PostDiscussionhas_many:通過

user.rb

has_many :discussions 
has_many :replies, through: :discussions, source: :posts 

所以一個Discussion有很多Posts屬於許多不同的Users。 在我的show頁面上,我想顯示所有Posts及其對應的Users。我知道我可以通過user.replies獲得一個User's的帖子。但我無法弄清楚如何做相反的事情:得到User,如果我有Post

這是我到目前爲止有:

<% @posts.each do |post| %> 
    <div class="discussion_right"> 
    <div class="discussion_head"> 
     <% t = post.created_at %> 
     <%= t.strftime("Posted on %b %-d, %Y %l:%M %P") %> 
    </div> 
    <div class="discussion_body"> 
     <%= post.body %> 
    </div> 
    </div> 
    <div class="discussion_left"> 
    <div class="discussion_head"> 
     <%= post.user.first_name %> 
    </div> 
    </div> 
<% end %> 

discussion.rb

belongs_to :user 
has_many :posts 

post.rb

belongs_to :discussion 

明顯的線post.user.first_name不起作用...

回答

0

如果用戶可以創建一個職位,那麼你需要一個user_id添加到職位,並添加belongs_to關係

rails g migration add_user_id_to_posts user_id:references 
rake db:migrate 

# post.rb 
belongs_to :user 

,那麼你應該能夠查詢post.user

+0

這裏是如何我創建了一個新帖子:'@discussion = current_user.discussions.build(params [:discussion])'但這隻設置帖子的discussion_id而不是帖子的user_id。我怎樣才能設置它們? (我正在使用'accep_nested_attributes_for:posts'來設置Post值) – mikeglaz 2013-03-13 23:55:18

+0

您必須手動將'user_id'傳遞給後期哈希或在視圖中爲'user_id'添加'hidden_​​field'。 – jvnill 2013-03-14 00:00:09

+0

如果'has_many:through'通過user.replies語法給每個用戶發帖子,我覺得每個帖子都必須有一個連接返回給他們的用戶。 – mikeglaz 2013-03-14 00:04:21