Я пытаюсь написать функцию complete_steps_for_course (course) в моей модели User, которая находит все выполненные шаги для курса, который прошел пользователь.
Моя модель пользователя ниже, где я хочу, чтобы функция жила
class User < ActiveRecord::Base
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
has_many :enrolments, :through => :groups
has_many :courses, :through => :enrolments
has_many :completed_steps, :dependent => :destroy
accepts_nested_attributes_for :memberships, :allow_destroy => true
attr_accessible :email, :password, :password_confirmation, :memberships_attributes, :is_admin,
:first_name, :last_name, :gender, :dob, :phone_number, :address, :city, :state, :postcode
def started_course?(course)
completed_steps_for_course(course).length > 0
end
def completed_steps_for_course(course)
#step_in_course = Course.joins(:components => :steps).where("course_id = ?", course.id)
#completed_steps.where("course_id = ?", course.id)
end
end
Мои модели для курса, компонента и шага приведены ниже ...
class Course < ActiveRecord::Base
has_many :components, :dependent => :destroy
has_many :steps, :through => :components, :dependent => :destroy
end
class Component < ActiveRecord::Base
belongs_to :course
has_many :steps, :dependent => :destroy
end
class Step < ActiveRecord::Base
belongs_to :component
end
Не могу понять, как должна выглядеть функция, помогите! Я понимаю, что это, вероятно, простой вопрос, но утренний кофе сегодня явно не помог.
РЕДАКТИРОВАТЬ У меня есть таблица, которая отслеживает выполненные действия для пользователя, как показано ниже ...
class CompletedStep < ActiveRecord::Base
belongs_to :user
belongs_to :step
validates_presence_of :user, :step
validates_uniqueness_of :step_id, :scope => 'user_id'
end