三个表之间的轨道关系

时间:2018-04-03 13:45:35

标签: ruby-on-rails

我想我已陷入混乱,这就是我想要做的事情:

我有3张桌子,Students, Classes and Payments

我目前通过has_one :classeshas_many :students

将学生与班级表相关联

设置课程时,您可以选择课程运行的周数(显示周数的数字字段),例如5或7

我需要的是跟踪学生上课时的付款金额。例如becky参加体育课,她在5周的第3周加入,只付1周。

到目前为止,付款表有3列(可以添加更多)students_id classes_idweek_paidamount_paid_to_date

我还没有将付款表链接到任何内容

你能指出我正确的方向吗?或者如果可能的话?

由于

2 个答案:

答案 0 :(得分:1)

我在这里看到了几个问题。如果Paymentstudent_idclass_id,我们会说belongs_to

belongs_to :student
belongs_to :class

您可以查看here the difference between has_one and belongs_to。基本上它取决于您存储外键的位置。

此外,Fran是对的 - 最好坚持使用rails约定并重命名classes。这将使整个事情变得更加容易。我们假设您将其重命名为lessons。然后,它的模型将被称为Lesson

然后,如果您想获得付款金额,您可以这样做:

paid_amount = student.payments.where(lesson_id: lesson_id).sum(:amount)

或类似的东西。

答案 1 :(得分:0)

所以我想我已经解决了,

学生模特:

has_many :payments

课程模型:

has_many :students
has_many :payments

付款模式:

has_one :students
has_one :classes

这可能是最简单的方法:)