2012-05-11 76 views
0

有關急切加載的快速問題。我有以下代碼:渴望加載 - 僅限負載特定記錄

@user = User.includes(:餐館).find_by_unique_identifier(PARAMS [:unique_identifier])

然而,我只要加載與給定的相關聯的餐館用戶只有在餐館有一個X的list_id(這是餐館桌子的其中一列)。

我該怎麼辦?

我嘗試了以下,但它仍然加載與用戶關聯的所有餐廳記錄。

@user = User.includes(:restaurants).where(:restaurants => {:list_id => params[:list_id]}).find_by_unique_identifier(params[:unique_identifier]) 
+0

順便說一下,用戶has_many餐館和餐館has_many用戶通過關聯連接表。 – Alex

回答

0

假設你擁有所有的協會要求的設置,那麼你可以使用joins

@user = User.all(:conditions =>["restaurants.list_id = ?", params[:list_id] ], :joins => [:restaurants]) 

UPDATE:
我的代碼獲取用戶的列表。但是,您可以使用過濾方法來縮小列表或獲取單個記錄。

+0

是的,但是這並不查找實際用戶。必須通過分配給每個用戶的unique_identifier來查找他/她。因此,首先我想找到使用此方法的用戶,然後拉入特定用戶的餐館,但只能匹配給定list_id的餐館。 – Alex

+0

對不起,如果聽起來有些複雜。讓我知道我是否可以嘗試更好地解釋它。 – Alex

+0

爲什麼不添加另一個條件,如:「AND id =?」然後從列表中獲得第一個項目。這是一個快速的答案,雖然... – yek