2011-01-27 63 views
0

對不起,如果這是一個簡單的問題,我沒有太多運氣與我一直在使用的搜索條件...如何根據在另一個表中找到(或未找到)的信息對結果進行分組?

在我的rails 3項目中,我有模型項目,用戶和UserProjectRole。

用戶有許多項目,以及UserProjectRole(包含user_id,project_id和role)中定義的每個項目的角色。

有2個角色:編輯和主角。

如果我想對項目列表進行分組,以便current_user先看到他們列出的項目,然後再列出他們可以編輯的項目,以及最後沒有列出任何角色的項目,我該怎麼做?

在此先感謝。

+0

什麼關係(的has_many,has_and_belongs_to_many等)之間三種模式? – kikito 2011-01-27 16:15:48

回答

1

這裏有一個方法:

select project, decode(sort, 1, 'LEAD', 2, 'EDITOR', 'Not Assigned') role 
from (
select project, role, case when user_id = <current_user_id> and role = 'LEAD' then 1 
          when user_id = <current_user_id> and role = 'EDITOR' then 2 
          else 3 end sort 
from UserProjectRole 
) order by sort, project; 
0

也許通過 「訂單」 選項來發現?

User.projects.find(:all, :order => 'role_id') 

或者,如果你想獲得更多的具體與您如何顯示他們,你可以把它分解成3個獨立的查找每個類型

User.projects.find(:all, :conditions { :role_id => 0 }) 

User.projects.find(:all, :conditions { :role_id => 1 }) 

User.projects.find(:all, :conditions { :role_id => 2 }) 
相關問題