2014-05-15 57 views
0

我最初問這個關於acts_as_tree的問題,但它似乎更一般,所以我在這裏稍微改寫一下。 我有一個使用acts_as_tree的模型「類別」。我經常發現自己需要將其與其他模型一起用於各種查詢,但我不知道如何使用提供的範圍(如兒童,祖先,兄弟姐妹,後代)來創建我需要的條件。加入Ruby中的命名範圍

具體的例子:

class Category < ActiveRecord::Base 
    acts_as_tree 
    has_many :photo 
end 

class Photo 
    belongs_to :category 
end 

cat = Category.first 

我如何可以查詢貓的兒童或者它的兄弟姐妹的所有照片的所有照片? 好像我需要這樣的東西:

Photo.joins(cat.children) 
Photo.joins(cat.siblings) 

,我知道是不是一個有效的代碼。

回答

0

由於act_as_tree並沒有真正使用返回的結果範圍,但方法,你可以不喜歡它:

class Photo 
    belongs_to :category 

    scope :from_category, -> (category) { 
     joins(:category).where(category: category) 
    } 
end 

cat = Category.first 

Photo.from_category(cat.children) 
Photo.from_category(cat.siblings) 

這應該工作。