Попытка разработать контроллер для отображения курсов (Rails) - PullRequest
0 голосов
/ 08 марта 2011

Ниже приведены модели, которые имеют отношение к моей проблеме.Я пытаюсь разработать способ отображения CourseEnrollments вместе с их шагами для данного пациента.Вот что я придумала до сих пор.

ДЕЙСТВИЕ ИНДЕКСА - / course_enrollments / -> Показать курсы, в которые зарегистрирован пользователь, а также самый последний обзор курса.Это может перенаправить на самый последний курс.

ПОКАЗАТЬ ДЕЙСТВИЯ - / course_enrollments /: id -> Показать курсы, в которые зарегистрирован пользователь, а также самый последний обзор курса

Часть, с которой я борюсьвыяснить, как отобразить отдельный шаг для курса.Должно ли это быть сделано в контроллере course_steps (который вложен в ресурс курсов)?

class Course < ActiveRecord::Base
  belongs_to :course_category
  belongs_to :client
  belongs_to :user_created, :foreign_key => :user_created_by, :class_name => "User"
  belongs_to :user_updated, :foreign_key => :user_last_updated_by, :class_name => "User"
  has_many :course_steps, :dependent => :destroy
  has_many :steps, :through => :course_steps
  has_many :course_requests, :dependent => :destroy
  has_many :course_enrollments, :dependent => :destroy
  has_many :patients, :through =>:course_enrollments
end

class CourseStep < ActiveRecord::Base
  belongs_to :step
  belongs_to :course

 validates_uniqueness_of :step_id, :scope => :course_id
end

class Step < ActiveRecord::Base
 belongs_to :step_type
 belongs_to :client
 has_one :step_quiz, :dependent => :destroy
 has_one :step_survey, :dependent => :destroy
 has_one :step_text, :dependent => :destroy
 has_one :step_download, :dependent => :destroy
 has_one :step_video, :dependent => :destroy
 has_one :step_presentation, :dependent => :destroy
 has_many :course_steps, :dependent => :destroy
 has_many :courses, :through => :course_steps
end


class CourseEnrollment < ActiveRecord::Base
  belongs_to :patient
  belongs_to :course
end

class Patient < ActiveRecord::Base
  belongs_to :user, :dependent => :destroy
  has_many :enrollments, :dependent => :destroy
  has_many :clients, :through => :enrollments
  has_many :course_requests, :dependent => :destroy
  has_many :course_enrollments, :dependent => :destroy
  has_many :courses, :through => :course_enrollments
end

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

Обычный подход состоит в том, чтобы вкладывать их и иметь сложный вид пути, но способ маршрутизации этих вещей часто зависит от уровня контекста.Например, отображается ли курс, управляемый пользователем, в той степени, в которой путь должен содержать пользователя, или это просто случай персонализации страницы курса?

Как правило, вы видите такие вещи:

resources :courses do |course|
  course.resources :enrollments
  course.resources :steps
end

Обычно существует корреляция между вашими отношениями has_many и объявлением эквивалентного resources, но не всегда.

Просмотрите сгенерированные маршруты, используя rake routes, чтобы увидетькакие параметры будут вызываться при передаче вашему контроллеру, а также какое будет ожидаемое имя контроллера.Вы можете настроить имя контроллера, передав опцию :controller для маршрута.

Обычно последняя запись в пути передается как :id, тогда как предыдущие именуются, например :course_id.Это несколько раздражающее несоответствие, поэтому будьте осторожны, чтобы проверить, загружаете ли вы, используя правильные параметры.

0 голосов
/ 08 марта 2011

Если вам нужно отобразить отдельный шаг для курса, вам определенно необходимо использовать контроллер course_steps, логика которого заключается в том, что каждый объект CourseStep представляет собой комбинацию из одного курса и одного шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...