0

我有如下定義的三種型號:的Rails應用範圍的has_many協會

class Parent < ActiveRecord::Base 
    has_many :kids 
    has_many :restrictions 

    def has_valid_restriction? 
    self.restrictions.where(:type => 1).size > 0 
    end 
end 

class Kid < ActiveRecord::Base 
    belongs_to :parent 
    has_many :restrictions 

    scope :valid, -> { 
    includes(:restrictions).where("restriction.type = 1") 
    } 
end 

class Restriction < ActiveRecord::Base 
    belongs_to :restricted_object #this can be kid or parent 
end 

孩子有一個名爲「有效」範圍,其選擇具有與1型限制孩子我想類似的範圍增加家長選擇有一種限制類型或有效孩子(即限制類型1的孩子)的父母。

如何創建這樣一個範圍?

回答

0

它看起來像所有你需要做的是返回唯一的父母在那裏無論是父母限制或孩子限制爲1

我建議使用導軌控制檯rails c試驗和改進範圍。

scope :valid, -> { 
    joins(:restrictions, kids: :restrictions).where("parents.restrictions = 1 OR kids.restrictions = 1).uniq 
}