如何运行组合来自不同表的列的简单each-do循环? (ROR)

时间:2015-10-31 06:02:01

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2

我正在尝试遍历两个单独的列'值得的数据,使用每个循环。我想在页面上显示问题,然后是用户的电子邮件和update_last。我是一个新手,我不知道如何同时从单独的数据库中的单独列中绘制。这是我的代码:

<ul>
<% @questions.each do |question| %>
<hr>
    <li><%= **question**.title %></li>
    <li><%= **question**.user_id %></li>
    <li><%= **users**.email %></li>
<% end %>
</ul>

任何帮助都会很棒。我刚刚开始学习RoR并且有很多信息!!

提前致谢。

-T

2 个答案:

答案 0 :(得分:3)

设置模型:

# app/models/user.rb
class User < ActiveRecord::Base
  has_many :questions, dependent: :destroy
end

# app/models/question.rb
class Question < ActiveRecord::Base
  belongs_to :user
end

user_id列添加到您的questions表格中:

rails g migration AddUserIdToQuestions user_id:integer
rake db:migrate

然后,在相应的控制器操作中:

def your_action_method
  @user = User.find(1) # find a user
end

然后,在相应的视图中:

<ul>
  <% @user.questions.each do |question| %>
      <li><%= question.title %></li>
      <li><%= question.user_id %></li>
      <li><%= @user.email %></li>
  <% end %>
</ul>

这是一个基本的工作设置,以便您可以启动。但是,还有更多工作要做。绝对查看official Rails Guide for Association

此外,在创建拥有对象(question)时,您必须将其与正确的所有者对象(user)相关联,以便您可以在任何时间执行:user.questions获取该特定questions的{​​{1}}。像这样:

user

您还可以在@user = User.find(1) @question = Question.create(title: 'Title', body: 'body', user_id: @user.id) 模型中添加Active Record Validations,以确保在创建Question记录时user_id存在:

question

答案 1 :(得分:1)

学习有效记录关联。安装用户在您的模型中有许多问题。 然后,当您将用户集合对象作为用户作为每个块内的单个对象进行迭代时,您将遇到方法问题(例如user.questions)。现在遍历user.questions,您将收到该特定用户的问题。 http://guides.rubyonrails.org/association_basics.html