2013-01-09 100 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