次のスコープを書くのを手伝ってくれませんか。
Cv
Student
所属し、学生が少なくとも1つの教育(student.edcuations.any?
)を持ち、学生が有効である(すべての属性が入力されている)すべてのCVSを提供するスコープを作成したい
そのスコープを。に書きたいCv
。
モデル
#cv.rb
belongs_to :student
#student.rb
has_many :cvs
has_many :educations
次のスコープを書くのを手伝ってくれませんか。
Cv
Student
所属し、学生が少なくとも1つの教育(student.edcuations.any?
)を持ち、学生が有効である(すべての属性が入力されている)すべてのCVSを提供するスコープを作成したい
そのスコープを。に書きたいCv
。
モデル
#cv.rb
belongs_to :student
#student.rb
has_many :cvs
has_many :educations
モデルのレイアウトを誤解していると思います。
各履歴書には教育がリストされているので、このように見えるべきだと思います(そうでなければ、データベース内で互いにどのように接続されていますか)
#cv.rb
belongs_to :student
has_many :educations
#student.rb
has_many :cvs
#education.rb
belongs_to :cvs
ただし、おそらくクラスメソッドを使用するだけです。
#student.rb
def cvs_with_education
self.cvs.reject {|cv| cv.educations.empty?}
end
ネストされた関連付けを結合する方法については、 ActieRecord Query Interface Guideのセクション 11.2.3 を確認してください。
何かのようなもの
scope :with_education, joins(:student => :educations).where("some conditions")
:valid_student
おそらく、スコープを定義してから、それを活用したいと思うでしょう。