2016-03-22 14 views
2

:age özniteliğine sahip User model ve numaralı has_many: :users numaralı bir modelim var.Takımın yaşına bağlı olarak süzgeç kapsamı

Ekiplerin filtre uygulayabilmesi için 2 farklı kapsamda :same_ages ve :different_ages türlerini nasıl oluşturabileceğimi veya bunların farklı yaşlara sahip olup olmadığını bilmek isterim.

Team.same_ages 
# In all teams returned, all members have the same age 

Team.different_ages 
# In all teams returned, there is at least one member with 
# different age as the others 

Bunu nasıl yapabilirim?

cevap

0

Sadece kapsamları olacağını düşünüyorum gibi:

scope :same_ages, -> { 
    where("id IN (SELECT team_id 
       FROM users 
       GROUP BY team_id 
       HAVING COUNT(DISTINCT(age)) = 1)" 
} 

scope :different_ages, -> { 
    where("id IN (SELECT team_id 
       FROM users 
       GROUP BY team_id 
       HAVING COUNT(DISTINCT(age)) > 1)" 
}