我正在使用rails创建一个课程系统,我想为完成某项任务授予用户积分,但我想避免用户可以刷新页面并再次获得积分。
我的控制器看起来像这样:
def beginnerscourse_08c
@user = current_user
@completion = "100%"
@user.increment(:tradepoints, 100)
@user.save
end
制作布尔值或类似系统的最简单方法是,检查用户是否已经获得了这些积分,如果没有奖励他们。
答案 0 :(得分:3)
您需要一个具有user_id
和course_id
列作为外键的关联表。该表的目的是跟踪哪些用户已获得哪些课程的奖励。例如:
user_id course_id
1 1
2 1
2 2
3 1
4 3
查看上表,您可以清楚地看到用户1已完成课程1,用户2已完成课程1和2,依此类推。然后,您可以检查该表以查看特定用户在递增积分之前是否已获得给定课程的奖励,以及执行向用户显示已完成课程列表的操作,或运行有关已完成的用户数量的报告一门课程。