私は、がCourse
に属し、Program
に属する状況があります。私のコントローラーでは、CourseSessionからプログラムの名前を取得したいと思います。私は周りを見ていて、多くの人々がjoins
メソッドを使用して示唆しているのを見てきました。残念ながら私の場合、これは私の場合はうまくいかなかった。このエラーが発生します:"結合"クエリの作成2関連付け
Can't join 'CourseSession' to association named 'program'; perhaps you misspelled it?
私は間違っていますか?
@sessions = if params[:program]
CourseSession.joins(:course).joins(:program).where("program.name = params[:program]")
else
CourseSession.all
end
class Program < ApplicationRecord
has_many :courses, dependent: :nullify
end
class Course < ApplicationRecord
has_many :sessions, class_name: "CourseSession", inverse_of: :course, dependent: :destroy
belongs_to :program
end
class CourseSession < ApplicationRecord
belongs_to :course
end
ありがとうございます。私は質問する必要があるので、まだ少し質問しています。アソシエーション・チェーンを辿って何かを書いているときに、パフォーマンスヒットはありますか?もしそうなら、どんな提案もありますか? –
'courses.program_id'と' course_sessions.course_id'にインデックスがある限り、あなたは良いはずです。これは私が想像するレポートではないので、あなたは安全だと思います。 – vee
お役立ち情報ありがとう。 「レポート」とはどういう意味ですか? –