has_many:通过

时间:2013-03-13 23:33:40

标签: ruby-on-rails-3 has-many-through

我有留言板。 User可以创建新的DiscussionUser还可以为Post创建新的Discussion

user.rb

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

因此Discussion有许多Posts属于许多不同的Users。 在我的show页面上,我想显示所有Posts及其对应的Users。我知道我可以使用User's获得user.replies个帖子。但我无法弄清楚如何做相反的事情:如果我有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行不起作用......

1 个答案:

答案 0 :(得分: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