0
我有一個與「用戶」,「商店」和「權限」有關的連接模型「UserPermission」。如何設置範圍以加載與條件的關聯?
我希望能夠根據商店的標識,在用戶模型上調用的作用域,將所有的Permission實例加載。
創建是這樣的範圍:
User.for_shop(1)
這將發出用戶一個查詢,然後在後續的查詢權限,該權限加入對UserPermission其中shop_id == 1
我有一個與「用戶」,「商店」和「權限」有關的連接模型「UserPermission」。如何設置範圍以加載與條件的關聯?
我希望能夠根據商店的標識,在用戶模型上調用的作用域,將所有的Permission實例加載。
創建是這樣的範圍:
User.for_shop(1)
這將發出用戶一個查詢,然後在後續的查詢權限,該權限加入對UserPermission其中shop_id == 1
這應該做你想:
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
第二行不會命中數據庫;該用戶的權限已被加載到前一行中。
你能否提出你的模型在這個問題上? – 2013-03-07 19:02:50