Cancan是否可以通过我的最佳选择来改变管理范围?

时间:2013-10-17 00:11:11

标签: ruby-on-rails cancan

情况:在我的网站上,我有一个评论模型,其中包含已删除的字段。用户无法看到已删除的评论,但我想允许管理员查看已删除的评论,如果他们选择的话。这将通过为具有admin角色的用户提供范围来实现,该角色允许他们查看删除字段设置为false的注释,以及true。

问题:Cancan的accessible_by方法是我最好的选择吗?从我读过的内容来看,它听起来确实会促进我正在尝试做的事情,但是,如果有更好的方法,我不想实现效率低下的东西。

1 个答案:

答案 0 :(得分:0)

为了将查询分离出来,只根据角色提取所需的记录,accessible_by非常适合这种情况。

如果您想让他们选择(管理员)查看或不查看已删除的评论,那么仅凭accessible_by范围可能是不够的,可能更好的是使用带有开关的accessible_by在模型上创建范围,无论是否他们选择查看或不查看已删除的评论。

@user.comments.viewing_deletes(true).accessible_by(current_ability)

其中,viewing_deletes是注释的范围,用于查找“已删除”的注释以及其余的true和非删除注释的false。