【发布时间】:2015-09-27 02:20:17
【问题描述】:
我想将数据显示如下;
Day1
09:00 Math
11:00 Science
Room classA (3rd floor)
Day2
10:00 English
13:00 Music
Room classB (1st floor)
样本文章表
school_id day start_time title
1 1 09:00 Math
1 2 10:00 English
1 1 11:00 Science
2 1 12:00 Physics
1 2 13:00 Music
样板间桌
school_id day name detail
1 1 classA 3rd floor
1 2 classB 1st floor
2 1 classC 2nd floor
我认为我应该在 Rails 中实现如下所示的 SQL 来显示房间数据。
SELECT name, detail FROM rooms WHERE articles.school_id = rooms.school_id AND articles.day = rooms.day
如果您能给我最好的 Rails 方法,我将不胜感激,尽管我尝试了一些代码。
查看代码
<div class="row">
<% @articles.each do |a| %>
<%= a.start_time %> <%= a.title %><br>
<!-- I can't display rooms.name and rooms.detail -->
<% end %>
</div>
控制器代码
def show
@articles = Article.where(school_id: (params[:id])).order(day: :asc)
型号代码
class School < ActiveRecord::Base
has_many :articles
class Article < ActiveRecord::Base
belongs_to :school
class Room < ActiveRecord::Base
#(nothing)
架构
ActiveRecord::Schema.define(version: 20150999999999) do
create_table "rooms", force: true do |t|
t.integer "school_id"
t.integer "day"
t.string "name"
t.string "detail"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "articles", force: true do |t|
t.integer "school_id"
t.integer "day"
t.string "start_time"
t.string "end_time"
t.integer "category"
t.string "title"
t.string "contents"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "schools", force: true do |t|
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
end
如果您能给我任何建议,我们将不胜感激。
【问题讨论】:
-
一门学科(例如数学)和它所教的空间之间的关系是否存储在任何地方?我在文章表中看到了 school_id,但没有比这更具体的了。
-
感谢您的评论,@eeeeeean。主题和房间之间没有关系。因为房间是由
day而不是title决定的(主题:数学、音乐......)。一天之内,所有科目都在同一个房间里教授。所以我认为我应该用 SQL 术语编写诸如SELECT name, detail FROM rooms WHERE articles.school_id = rooms.school_id AND articles.day = rooms.day之类的程序。
标签: sql ruby-on-rails ruby ruby-on-rails-4