mysql - 如何在rails中一行显示多个表中的数据

标签 mysql ruby-on-rails

我有两个表 - 报告和主题。如何在 Rails 中一行查询和显示两个表的数据?

关系如下:

class Subject < ActiveRecord::Base
 has_many :term_reports
end

class TermReport < ActiveRecord::Base
 belongs_to :subject
end

这是模式:

create_table "subjects", force: true do |t|
 t.string  "name"
 t.integer "user_id"
 t.date    "createdate"
end

create_table "term_reports", force: true do |t|
 t.string  "student_studentid"
 t.integer "subject_id"
 t.integer "score"
 t.integer "position"
 t.integer "term"
 t.integer "year"
 t.integer "user_id"
 t.date    "ceatedate"
 t.string  "remark"
 t.string  "form_class"
end

现在我要的数据是这样的格式:

Sujectname score position etc..

请注意,主题名称存储在 Sujects 表中。 下面的代码仅从一个表中生成数据:

@student_subject = TermReport.includes(:subject).all
@student_subject = TermReport.joins(:subject).all

但是,此 sql 在 Workbench 中运行良好,但如果我使用 find_by_sql,则显示来自一个表的数据。帮助

select * from term_reports t, subjects s
where t.subject_id = s.id

最佳答案

这应该可以正常工作,您可以在您的控制台上尝试一下:

TermReport.includes(:subject).all.each do |term|
  puts "#{term.subject.name} #{term.score} #{term.position}"
end

TermReport.all 就足够了,我认为您不需要 includes(:subject)。

关于mysql - 如何在rails中一行显示多个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807085/

相关文章:

php - 在我的新代码中对非对象执行 bind_param() 函数

mysql - 如何使用使用表单参数找到的一个表的结果来查询另一个表 - Ruby on Rails

ruby-on-rails - Ruby 查找具有特定帖子内容的用户

ruby-on-rails - 将 ACL 设置为 public_read 的文件上传到 AWS S3

ruby-on-rails - 基于条件的值

ruby-on-rails - 火腿 + mustache

python - 从python函数插入mysql表

javascript - 如何根据服务器上的内容更新客户端 JavaScript?

MySQL:是否有可能 "INSERT if number of rows with a specific value is less than X"?

MySQL:如果某些列包含 some_id X 的值,则排除