問題
可以說我有has_many-belongs_to關係的兩個模型。 has_many有一個定義的範圍和一個名爲grade的整數屬性。使用範圍belongs_to關聯範圍在第一個模型 - Ruby on Rails
class Parent < ApplicationRecord
has_many :children
scope :great, -> (min_grade) {where("grade > :grade", grade: min_grade)}
end
class Child < ApplicationRecord
belongs_to :parent
end
我想在子模型上創建一個範圍,它使用父模型的範圍。
有沒有辦法讓我可以使用Parent的範圍定義?
目前的解決方案
我這樣做是正確的,現在的方式是
class Child < ApplicationRecord
belongs_to :parent
scope :wit_great_parent, -> (min_grade) {
join(:parent).where("grade > :grade", grade: min_grade)}
end
不過,我複製在這兩個地方的where子句。
問題
有沒有辦法從子模型調用父範圍?
孩子只有一個父母,所以我不認爲它使多大意義,範圍的單個對象:/也許'回報爲零如果parent.grade> min_grade'? – gabrielhilal
我想返回所有擁有更高年級的父母的孩子。我不想讓所有的孩子都接受你提出的「如果」一個一個的檢查。 – Mateu