Rails关系帮助

时间:2011-03-17 15:51:58

标签: ruby-on-rails

我简化了我的设计,使这个问题更清晰。 (下面的模型设计)

我想要做的是从CourseEnrollment获取该注册的所有PatientCourseSteps(注册包括患者和课程)。

以下是我的尝试:

#Gives me ALL the patient course steps regardless of the course
course_enrollment.patient.patient_course_steps 

#Gives me ALL the patient course steps regardless of the patient
course_enrollment.course.patient_course_steps

以下是必要的模型

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

class Course < ActiveRecord::Base
  has_many :course_steps, :dependent => :destroy
  has_many :steps, :through => :course_steps
  has_many :course_enrollments, :dependent => :destroy
  has_many :patients, :through =>:course_enrollments
  has_many :patient_course_steps, :dependent => :destroy
end

class Patient < ActiveRecord::Base
  belongs_to :user, :dependent => :destroy
  has_many :enrollments, :dependent => :destroy
  has_many :clients, :through => :enrollments
  has_many :course_enrollments, :dependent => :destroy
  has_many :courses, :through => :course_enrollments
  has_many :patient_course_steps, :dependent => :destroy
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
  has_many :patient_course_steps, :dependent => :destroy
end



class PatientCourseStep < ActiveRecord::Base
  belongs_to :patient
  belongs_to :course
  belongs_to :step
end

1 个答案:

答案 0 :(得分:0)

我最终做的是在CourseEnrollment中添加一个名为patient_course_steps的方法,该方法会查询我需要的内容。

def patient_course_steps
  PatientCourseStep.where(:patient_id => self.patient_id, :course_id => self.course_id)
end
相关问题