【发布时间】:2012-01-01 00:48:04
【问题描述】:
我通过模型权限拥有模型角色和访问权限的 has_many 关系。
我有一种情况,没有两个角色应该具有相同的访问权限。因此,我创建了一个自定义验证,当当前角色(正在创建)被分配与以前存在的角色相同的访问权限时,它基本上会导致错误消息,
errors.add(:Role, "already exists with selected permissions") if Role.all.map(&:access_ids).include?(self.access_ids)
这一切都很好。现在我需要获取与当前角色具有相同访问权限的角色。那么,我该怎么做呢?我试过了
Role.includes(:accesses).where(:accesses => {:id => [1,2]}).count
但这会返回访问 id 为 1 或 2 的所有角色(例如 [1, 2, 3, 4], [1], [2])。我需要的是获取访问 id 正好是 1 和 2 的角色。
如果我可以在上述查询中将 '=>' 替换为 '==' 那就太好了 :) 但这显然行不通。
【问题讨论】:
标签: mysql ruby-on-rails activerecord ruby-on-rails-3.1 has-many-through