1

如果预定义的方法等于 true,我正在尝试从用户表中获取实体。

我的用户模型中有这个方法

def self.expert?
  return self.has_role? :domain_expert
end

我正在尝试做这个查询

users = User.where(:expert? => true)

错误

 no such column: users.expert?

这个查询怎么做?

编辑:

我正在使用 rolify 宝石

在榜样

has_and_belongs_to_many :users, :join_table => :users_roles
4

3 回答 3

2

如果您使用的是高于 3.2 的 Rolify gem 版本,那么它只是

User.with_role(:domain_expert)

如果您按照此处所述设置 cancan 角色:基于角色的授权

然后你应该像这样查询

User.where(:role => :domain_expert)

您还可以为此定义范围并将其称为 User.domain_experts

如果您在 3.2 版之前使用 Rolify gem 或制作单独的模型,如下所述:单独的角色模型

然后你应该像这样查询

Role.where(:name => :domain_expert).users
于 2013-03-11T13:50:17.237 回答
0

查看 rolify gem 自述文件,有一个with_role范围

User.with_role(:domain_expert)
于 2013-03-11T14:04:31.240 回答
0

最后我明白了:)。

我必须加入两个表(用户和角色)

User.joins(:roles).where("name = ?", "domain_expert")

这解决了我的问题:)。

于 2013-03-11T14:08:46.853 回答