Я хочу, чтобы пользователи могли просматривать кнопку отправки задания, если и только если они завершили необходимые курсы задания. Прямо сейчас я добавил строку current_user.complete (@ task.courses.all?) На мою страницу tasks / show.html.erb, которая должна позволять пользователю просматривать кнопку отправки только после завершения курсов задачи. Но эта строка выдает ошибку в методе def complete для пользователя, говоря, что уроки метода не определены для true: TrueClass.
Модель задачи:
has_many :submissions
has_and_belongs_to_many :courses
Модель представления:
belongs_to :user
belongs_to :task
Модель курса:
has_many :lessons, dependent: :destroy
has_many :users, through: :enrolments
has_and_belongs_to_many :tasks, optional: true
Модель урока:
belongs_to :course
has_many :views
has_many :users, through: :views
Модель пользователя:
has_many :courses, through: :enrolments
has_many :submissions
has_many :views
has_many :lessons, through: :views
def view(lesson)
lessons << lesson
end
def viewed?(lesson)
lessons.include?(lesson)
end
def complete(course)
lessons.where(course: course).ids.sort == course.lessons.ids.sort
end
Задача / show.html.erb:
<% if current_user.complete(@task.courses.all?)%>
<%= link_to "Submit", new_task_submission_path(@task), class: "btn btn-primary" %>
<% end %>