Rails表连接

时间:2012-02-08 18:28:22

标签: ruby-on-rails join html-table arel

我正在试图弄清楚如何在我的一个模型中进行表连接。

有点,问题和用户。

point.rb

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

question.rb

class Question < ActiveRecord::Base
    has_many :points
end

user.rb

class User < ActiveRecord::Base

在我的积分控制器中,我这样做:

def index
    @points = Point.all
    @user_points = Point.where('user_id' => current_user)
end

在我的积分/索引视图中:

    <% @user_points.each do |user_point| %>
  <tr>
    <td><%= current_user.name %></td>
    <td><%= user_point.question_id %></td>
    <td><%= user_point.correct_answer %></td>
    <td><%= user_point.user_answer %></td>
  </tr>
<% end %>

我需要在问题表中访问每个问题的名称(我的视图中有问题ID。我是一个n00b到rails,并且无法弄清楚如何使用文档。

2 个答案:

答案 0 :(得分:1)

如果您阅读我之前的回答,请忽略它。我误解了你的问题。这应该有用。

在您看来:

<% user_points.questions.each do |question| %>
  ...Do whatever...
<% end %>

答案 1 :(得分:0)

看看Rails指南,特别是这两个:

  1. http://guides.rubyonrails.org/association_basics.html
  2. http://guides.rubyonrails.org/active_record_querying.html
  3. 我认为你应该可以在模型中设置它:

    class User < ActiveRecord::Base
        has_many :points, :through => :questions
    end
    
    控制器中的

    @user_points = current_user.points

    视图中的

    。这应该已经适用于您当前的代码!

    <% @user_points.each do |user_point| %>
        <td><%= user_point.question.name %></td>
    <% end %>