2016-08-13 14 views
0

私の関係が正しく設定されているかどうかは完全には分かりませんが、ここでは何をしようとしています。私はStudentのアクティブEnrollmentGradeを返そうとしています。 ActiveRecordクエリの関連プロパティにアクセスできません

current_enrollments = self.enrollments.where('admission_date <= ? and withdraw_date is null or withdraw_date >= ?', Date.today, Date.today) 

class SchoolYearGrade < ApplicationRecord 
    belongs_to :school_year 
    belongs_to :grade 
    has_many :enrollments 
end 

class Enrollment < ApplicationRecord 
    belongs_to :student 
    belongs_to :school_year_grade 
end 

class Grade < ApplicationRecord 
    has_many :school_years, through: :school_year_grades 
    has_many :school_year_grades 
end 

class Student < ApplicationRecord  
    has_many :enrollments 

    def get_current_grade 
    if self.enrollments.any? 
     current_enrollments = self.enrollments.where('admission_date <= ? and withdraw_date is null or withdraw_date >= ?', Date.today, Date.today) 
     if current_enrollments.count == 1 
     current_enrollments.first.school_year_grade.grade.title 
     else 
     ... 
     end 
    else 
     ... 
    end 
    end 
end 

Studentモデルで get_current_grade方法では、デバッグ、私は current_enrollments.first.school_year_grade.gradeにアクセスしようとだけ Nilが返されます。私は .includes(:school_year_grade)current_enrollmentsのクエリに追加しようとしましたが、何も取得できませんでした。

+0

どのようなsqlクエリが実行されますか?あなたが期待した結果ですか? – phoet

答えて

0

私はとても恥ずかしいです。さらに検査すると、存在しないレコードを指す無効なデータベース値がいくつかありました。いくつかの制約が必要です。

関連する問題