很抱歉,如果这是一个简单的问题,我对我一直在使用的搜索字词运气不太好......
在我的rails 3项目中,我有模型Project,User和UserProjectRole。
用户有许多项目,以及UserProjectRole(包含user_id,project_id和角色)中定义的每个项目的角色。
有两个角色:编辑和领导。
如果我想对项目列表进行分组,那么current_user会看到他们首先列出的项目,他们可以编辑的项目排在第二位,以及最后没有列出任何角色的项目,我该怎么办?
提前致谢。
答案 0 :(得分: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;
答案 1 :(得分:0)
也许将“order”选项传递给find?
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 })