2013-01-09 68 views
0

快速導軌部分,例如我有兩個模型用戶和角色,我想創建一個基於某個角色的用戶索引/列表,我該如何去構建在我的控制器rails 3使用where子句從兩個模型創建索引

是它像

#first create the association 
@user = role.build 

#then build the index based on a Role of role_id = 2 
@userrole = @user.where(@user.role_id == 2) 

我知道這是僞代碼,但是這是正確的?什麼是適當的導軌代碼?

回答

0
roles = Role.where(id: [1, 2]) 
users = User.where(role_ids: roles.collect(&:ids)) 

這只是一個例子,因爲很明顯,如果我們已經知道的ID,我們就不需要第一查詢,但如果我們的角色有一個可編輯的列(作爲一個例子),我們可以這樣做:

roles = Role.where(editable: true) 
users = User.where(role_ids: roles.collect(&:ids)) 

如果我們想訂購這些,我們可以簡單地添加:

users = User.where(role_ids: roles.collect(&:ids)).order("created_at DESC") 
+0

這是我如何得到它的工作@users = User.includes(:角色)。凡( 'roles.id'=> 2) – jmorrissette