【问题标题】:listing only questions correlates with user in rails 3仅列出与 Rails 3 中的用户相关的问题
【发布时间】:2012-12-28 04:50:17
【问题描述】:
I have the following models:
  • 用户
  • 调查
  • 尺寸
  • 问题

    以下关系:

  • USER (has_many) -> 调查

  • 调查 (has_many) -> 尺寸
  • DIMENSION (has_many) -> 问题

    =================================

    我只需要为一位用户列出问题。例如: id = 1 的 USER 是登录名。所以只列出用户的问题。

    我尝试使用 INNER JOINS 手动使用 sql,但我做不到。谁能给我一个提示。 我也试过 @question.dimension.survey.user_id = @current_user ,但没有成功

谢谢

【问题讨论】:

    标签: mysql ruby-on-rails activerecord


    【解决方案1】:

    以下查询肯定会起作用。试试这个。

    @questions = current_user.surveys.map{|d| d.dimensions}.map{|q| q.questions}
    如果你手动给当前用户,你可以像这样
    @questions = User.find(1).surveys.map{|d| d.dimensions}.map{|q| q.questions} for user id=1

    【讨论】:

    • 根据用户id(即'1')可以写成@questions = User.find(1).surveys.map{|d| d.dimensions}.map{|q| q.questions}
    • 没用。没用。看,我想仅列出 USER 记录的问题,并且所有问题都出现在这里。
    • 我决定好了,不知道是不是最好的办法:
    【解决方案2】:

    我决定好了,不知道是不是最好的办法(在app/controllers/question_controller.rb中):

    <% @questions.each do |question| %>
    <% if (question.dimension.survey.user_id == @current_user.id) %>
    <tr>
    <td><%= question.dimension.survey.user.name %></td>
    <td><%= question.dimension.survey.title %></td>
    <td><%= question.dimension.name %></td>
    <td><%= question.question %></td>
    <td><%= question.order %></td>
    <td><%= question.status %></td>
    <td><%= link_to 'Show', question %></td>
    <td><%= link_to 'Edit', edit_question_path(question) %></td>
    <td><%= link_to 'Destroy', question, method: :delete, data: { confirm: 'Are you sure?' } %>
    </td>
    </tr>
    <% end %>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多