2013-03-07 50 views
0

我有一個與「用戶」,「商店」和「權限」有關的連接模型「UserPermission」。如何設置範圍以加載與條件的關聯?

我希望能夠根據商店的標識,在用戶模型上調用的作用域,將所有的Permission實例加載。

創建是這樣的範圍:

User.for_shop(1) 

這將發出用戶一個查詢,然後在後續的查詢權限,該權限加入對UserPermission其中shop_id == 1

+0

你能否提出你的模型在這個問題上? – 2013-03-07 19:02:50

回答

0

這應該做你想:

scope :for_shop, lambda { |shop_id| where(:shop_id => shop_id).includes(:permissions) } 

您有另一個(當量)選項:

Shop.find(1).users.includes(:permissions) 

無論哪種方式,你都會得到一個用戶範圍的列表。他們的權限是急切加載的,所以當你這樣做時:

user = User.for_shop(1).first 
user.permissions 

第二行不會命中數據庫;該用戶的權限已被加載到前一行中。