Rails 3使用where子句从两个模型创建索引



quickrails部分,假设我有两个模型user和Roles并且我想基于某个Role创建一个Users的索引/列表,我如何在我的控制器

中构建它呢?

是类似

的东西吗?
#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)

我知道这是伪代码,但这是正确的吗?什么是合适的rails代码?

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")

相关内容

  • 没有找到相关文章

最新更新