寻找一种在rails数据库中跟踪历史的方法

时间:2017-03-09 06:51:53

标签: ruby-on-rails ruby-on-rails-3 join model-view-controller jointable

我正在考虑这个以下线程的附加问题: Using join tables in ruby on rails

所以我们有'学生'和'课程'脚手架由多对多协会加入,但另外还有一个'学期'脚手架,我想做的是,对于每个添加到学生的学生一个课程,用于申请在过去的学期中搜索相同课程的先前迭代,以及已知学生之前学过该课程的次数。我现在对于如何实现这一点感到困惑,所以我希望有人可以帮我确定我应该操作的逻辑和代码。

到目前为止我已经做了一些基本的假设:

  • '课程'和'学期'应该像'学生'和'课程'一样加入 通过多对多协会(每学期开设许多课程, 并且课程教授超过一个学期。)
  • 课程中应该有一个动作(比方说get_student) 控制器通过student_id定位学生。 这将是我想要做什么的主要领域。这种方法在代码中会是什么样的?
  • 在学生课程联接表中,我应该有一个属性 '尝试',每次get_student发现这个增量 student_id与调用方法的course_id相结合。这个 将是实际告诉课程多少次的机制 已被学生尝试过。
  • 我最初想知道是否应该有一个“学期”控制器 在所有学期激活get_student的动作,但现在我 认为如果没有这个,get_student应该可以正常工作。

感谢我能得到的任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

这不是一个好的答案,只是评论。 我会评论,但听到会更清楚。我将更新其他要点。这只是一个持续的反馈/讨论,而不是答案。

class Semester < ApplicationRecord
 has_many :courses
end

class Course < ApplicationRecord
 has_many :students
end

和 semester.courses [0] .students =&gt;输出学生阵列

这可能是计算完成该课程的学生人数的方法:

def studentForCourse

 #input_params.course_id => course id you are selecting

 semester = Semester.find(input_params)

 semester.courses.each do |course|
   if  course.id = input_params.course_id
     nstudents = course.students.size
   end
end