【发布时间】:2014-05-24 22:33:49
【问题描述】:
我正在构建一个培训网站,其中有两个模型 User 和 Course,它们与第三个模型 CourseCompletions 相关联。第三种模型用于跟踪哪个用户完成了哪些课程,反之亦然。前两个模型有控制器,而第三个没有。
我实现了完成课程的功能并且它可以工作(如果用户之前没有完成该课程,则单击课程页面上的“完成课程”按钮会在 course_completion 表中插入相应的行),但我不确定关于我的实现的健壮性和安全性。这在 Course_Controller.rb 中:
为简洁起见省略了辅助方法
def complete_course
@course = current_course
@user = current_user
if !already_completed
@course.course_completions.create(user_id: @user.id, course_id: @course.id, completion_date: Time.now)
flash[:success] = "Congratulations! Your progress has been saved."
redirect_to course_path
else
flash[:success] = "Looks like you have already completed this course before, but mad props for reviewing it!"
redirect_to course_path
end
end
我的问题如下:
- 我应该像现在这样调用 create,还是 build(或 create!)更好的选择?
- 我应该在该函数中使用strong parameters 吗?如果是这样,在这种特殊情况下我该怎么做?
提前谢谢你。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4