親の他の子の属性に基づいて子のリストを並べ替えるアプリの一部に取り組んでいます。
私が取り組んでいるクラスは次のとおりです。
class SpecialChild
belongs_to: Parent
class Child_A
belongs_to: Parent
class Child_B
belongs_to: Parent
class Parent
has_many: SpecialChild
has_many: Child_A
has_one: Child_B
これらは、それに適用される 2 つの順序関数です。
scope :order_child_a,
joins("INNER JOIN child_a ON specialchild.parent_id = child_a.parent_id").
where("booleanvalue = true")
scope :order_parent_and_child_b,
joins("LEFT OUTER JOIN parent ON specialchild.parent_id = parent.id").
joins("LEFT OUTER JOIN child_b AS name ON parent.child_b_id = child_b.id").
order("name ASC, parent.lastname ASC")
私の問題は、このリストに SpecialChild が 1 つしかないにもかかわらず、その親に booleanvalue = true を持つ複数の Child_A があるため、存在しない場合でも同じ SpecialChild のコピーが表示されることです。
編集:最初のスコープで問題が発生しますが、予想される情報が欠落しているためにエラーが発生することなく.uniqを実行できないため、2番目のスコープを含めました。また、アプリ全体で使用される order_parent_and_child_b の変更も避けたいと思います。