0

我有一个用户模型和一个组织模型,它通过会员模型具有多对多关联。用户(没有角色)应该只能创建、读取和更新他们作为成员所属的组织。

我从 CanCanCan 的能力类中放入了以下内容,并 load_and_authorize_resource在组织模型上有一个。

can [:create, :read, :update], Organization do |organization|
    !(organization.memberships & user.memberships).empty?
end

当我加载/组织(索引页面)时,@organizations为零。

当我设置@organizations = Article.accessible_by(current_ability)我得到以下错误:

access_by 调用不能与块“可以”定义一起使用。无法为 :index Organization(id:integer...

文档提到了使用 SQL的建议,但我不太明白如何使用。

4

1 回答 1

0

看起来这条线是问题的一部分。

!(organization.memberships & user.memberships).empty?

我选择了下面的版本,它看起来更简单、更正确。

organization.memberships.pluck(:user_id).include?(user.id)

使用块调用时错误仍然存​​在accessible_by(current_ability),但我能够使用 Devise 的current_user方法解决。

于 2015-05-03T06:29:30.037 回答