Ruby on rails 3 你有很多吗

Ruby on rails 3 你有很多吗,ruby-on-rails-3,has-many-through,Ruby On Rails 3,Has Many Through,我有一个留言板。用户可以创建新的讨论。用户还可以创建一个新的帖子到讨论 user.rb has_many :discussions has_many :replies, through: :discussions, source: :posts belongs_to :user has_many :posts belongs_to :discussion 因此,一个讨论有许多帖子属于许多不同的用户。 在我的show页面上,我想显示所有帖子及其相应的用户。我知道我可以通过用户回复获得用户的

我有一个留言板。
用户
可以创建新的
讨论
用户
还可以创建一个新的
帖子
讨论

user.rb

has_many :discussions 
has_many :replies, through: :discussions, source: :posts
belongs_to :user
has_many :posts
belongs_to :discussion
因此,一个
讨论
有许多
帖子
属于许多不同的
用户
。 在我的
show
页面上,我想显示所有
帖子
及其相应的
用户
。我知道我可以通过
用户回复
获得
用户的
帖子。但是我不知道如何做相反的事情:如果我有
Post
,那么获取
User

以下是我目前掌握的情况:

<% @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 %>
post.rb

has_many :discussions 
has_many :replies, through: :discussions, source: :posts
belongs_to :user
has_many :posts
belongs_to :discussion

显然,行
post.user.first\u name
不起作用…

如果用户可以创建帖子,那么您需要向帖子添加
用户id
,并添加
所属关系

rails g migration add_user_id_to_posts user_id:references
rake db:migrate

# post.rb
belongs_to :user

然后您应该能够查询
post.user

以下是我创建新帖子的方法:
@discussion=current\u user.discussions.build(params[:discussion])
,但这只设置帖子的讨论id,而不是帖子的用户id。我怎样才能把它们都设置好呢?(我正在使用
accepts\u nested\u attributes\u for:posts
设置Post值)您必须手动将
user\u id
传递到post散列,或在视图中为
user\u id
添加一个
hidden\u字段。如果
有多个:通过
为每个用户提供帖子。回复语法我觉得每个帖子都必须与他们的用户建立连接。您的
回复
关联这有点不对。假设您有一个讨论,然后有两个用户在该讨论上发布。user.replies将为您提供该用户创建的所有讨论的所有帖子列表,而不仅仅是用户创建的回复。很抱歉,我不知道如何手动将用户id添加到帖子哈希?