【发布时间】:2020-01-04 11:01:07
【问题描述】:
我目前正在开发一个 Ruby on Rails (v5.2) 项目,用于记录体育俱乐部的出席情况。每个学生都属于一个 payment_plan,每个 payment_plan 都有一个 classes_amount。 Classes_amount 是学生在再次付款之前能够参加的课程数量。每个学生都有一个 classes_remaining 列来跟踪这一点。每次出勤后自动减少,每次付款时自动增加。
我想在更改学生的 payment_plan 时自动更新他们的 classes_remaining 属性。例如。如果学生想从 payment_plan A (5 classes) 更改为 payment_plan B (10 classes),我希望他们的 classes_remaining 属性增加 10。当我将学生分配到新的付款计划时,他们的 classes_remaining 值保持为零。
这是我目前的更新方法:
def update
@student = current_club.students.find_by(id: params[:id])
classes_amount = @student.payment_plan.classes_amount
logger.debug "Classes amount is currently: #{classes_amount}"
if classes_amount.present?
if @student.classes_remaining.present?
@student.classes_remaining = @student.classes_remaining + classes_amount
else
@student.classes_remaining = classes_amount
end
else
@student.classes_remaining = nil
end
if @student.update_attributes(student_params)
flash[:success] = "Student details updated"
redirect_to @student
else
@activities = current_club.activities.all
render 'edit'
end
end
有一个 payment_plan 没有 classes_amount,因此是 if classes_amount.present? 行。
我的调试信息显示Classes amount is currently:
当学生的 payment_plan 发生变化时,如何自动更新学生的 classes_remaining 列?
【问题讨论】:
标签: ruby-on-rails