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添加到帖子哈希?