【问题标题】:Advance querying in Rails 3Rails 3 中的高级查询
【发布时间】:2013-01-30 14:35:48
【问题描述】:

我有一个带有 User ,Role , Group 模型的 Rails 应用程序。

用户模型

has_and_belongs_to_many :roles
has_and_belongs_to_many :groups

榜样

has_and_belongs_to_many :users

组模型

has_and_belongs_to_many :users

我还创建了一个映射表,例如,

roles_usersgroups_users 用于映射他们的 id

所以这里每个用户可以有多个组和角色,

在我的榜样中只有三个条目,

admin,ID 为 1trainer,ID 为 2trainee,ID 为 3

我想查找特定组下角色 id = 3 的所有用户,

我已经这样做了,

@group = Group.find(2)
@users = @group.users

在这里,我正在获取组 id =2 下的所有用户,但我想使用角色 id = 3 再次过滤它。如何解决这个问题。

感谢任何帮助。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    试试:

    @group = Group.find(2)
    @users = @group.users.joins(:roles).where("roles.id = ? && users.age = ?",3,30)
    

    【讨论】:

    • 它工作得很好......我是否可以在这里添加更多条件,即:在用户表中使用年龄 = 30 过滤以上结果。
    【解决方案2】:

    这应该可以@group.users.joins(:roles).where(roles: { id: 3 })

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 2015-03-23
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2014-06-08
      相关资源
      最近更新 更多