Rails 4 - 仅显示与特定用户关联的数据

时间:2014-09-08 21:13:23

标签: ruby-on-rails

我正在构建一个问题/答案应用程序。问题是静态的并且是提供的,而不是用户生成的。正在通过嵌套关系访问数据。

在单个用户视图中,我想显示用户已回答的问题列表及其相关答案。像这样:

问题1 用户1回答

此时,我正在显示每个问题,但所有答案都显示出来,而不仅仅是特定用户的答案。像这样:

问题1 用户1回答 用户2回答

以下是我的show.view中的代码。我也尝试过没有"如果是answer.user"并获得相同的结果。

<% @user.questions.uniq.each do |question| %>
  <h3><div class="answer"><%= question.question %> </div></h3>
    <% question.answers.each do |answer| %>
    <% if answer.user = current_user %>
      <div class="answer"><%= answer.answer %> <%= answer.created_at.strftime("(%Y)") %></div>
    <% end %>
  <% end %>
<% end %>

我的模特:

class Answer < ActiveRecord::Base
  belongs_to :question
  belongs_to :user
end

class Question < ActiveRecord::Base
  has_many :answers
  has_many :users, through: :answers
end

class User < ActiveRecord::Base
  has_many :answers
  has_many :questions, through: :answers
end

我的路线:

resources :users do
  resources :answers
end

我很乐意提供其他有用的代码。谢谢!

2 个答案:

答案 0 :(得分:1)

您将current_user分配给answer.user,您希望使用此行更改测试相等性

if answer.user == current_user

答案 1 :(得分:1)

实际上我更喜欢在不同的水平上对待它,我相信这也应该有用

<% @user.questions.uniq.each do |question| %>
  <h3><div class="answer"><%= question.question %> </div></h3>
  <% question.answers.where(user: @user).each do |answer| %>
    <div class="answer"><%= answer.answer %> <%= answer.created_at.strftime("(%Y)") %></div>
  <% end %>
<% end %>