如何修改视图以使其正常工作?我想要一个"立即注册按钮"这将为current_user创建一个seen_lessons记录?
class Course
has_many :lessons
end
class Lesson
#fields: course_id
belongs_to :course
end
class User
has_many :viewed_lessons
has_many :viewed_courses
end
class ViewedLesson
#fields: user_id, lesson_id, completed(boolean)
belongs_to :user
belongs_to :lesson
end
class ViewedCourse
#fields: user_id, course_id, completed(boolean)
belongs_to :user
belongs_to :course
end
class CoursesController < ApplicationController
def index
@courses = Course.all
end
def show
@course = Course.find(params[:id])
current_user.viewed_courses.create(course: @course)
end
end
一个问题是,每次查看页面时都会创建一个新的查看过的课程,你需要一些逻辑才能只添加一门课程。
也许是这样的:
def show
@course = Course.find(params[:id])
current_user.viewed_courses.create(course: @course) unless ViewedCourse.exists?(user_id: current_user.id, course_id: @course.id)
end
感谢您帮助我。
答案 0 :(得分:0)
在模型中,您可以validate for uniqueness ...
<强> viewed_course.rb 强>
class ViewedCourse
...
validates :course, uniqueness: { scope: :user, message: "should happen once per user" }
...
end
您的展示模板中似乎没有使用ViewedCourses。如果您以后再做,可能需要在某些情况下尝试the find_or_create_by method。
最后一条未经请求的反馈,你的措辞对我来说似乎有点混乱。 “注册”和“显示”感觉就像是两种截然不同的动作。