問題
私はhas_manyの-belongs_toの関係を持つ2つのモデルを持っているとしましょう。 has_manyにはスコープが定義され、grade属性にはinteger属性があります。使用範囲 - Rubyの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
親モデルのスコープを使用する子モデルでスコープを作成したいとします。
親にスコープの定義を使用することができますか?
現在のソリューション
は、私は今それをやっている方法は、
class Child < ApplicationRecord
belongs_to :parent
scope :wit_great_parent, -> (min_grade) {
join(:parent).where("grade > :grade", grade: min_grade)}
end
しかし、私は両方の場所でWHERE句をコピーしています。
質問
は、子モデルから親スコープを呼び出すことがとにかくありますか?
を参照
ActiveRecord::SpawnMethods#merge
のようになります。子供は一つだけの親を持っているので、私はそれが単一のオブジェクトのスコープにあまり意味があるとは思わない:/おそらく 'nilを返しますif parent.grade> min_grade'? – gabrielhilal
私はより大きい学年の親を持つすべての子供を返すしたいと思います。私は子供のすべてを取得し、あなたが提案する "if"によって一つずつチェックしたくありません。 – Mateu