情况:在我的网站上,我有一个评论模型,其中包含已删除的字段。用户无法看到已删除的评论,但我想允许管理员查看已删除的评论,如果他们选择的话。这将通过为具有admin角色的用户提供范围来实现,该角色允许他们查看删除字段设置为false的注释,以及true。
问题:Cancan的accessible_by方法是我最好的选择吗?从我读过的内容来看,它听起来确实会促进我正在尝试做的事情,但是,如果有更好的方法,我不想实现效率低下的东西。
答案 0 :(得分:0)
为了将查询分离出来,只根据角色提取所需的记录,accessible_by非常适合这种情况。
如果您想让他们选择(管理员)查看或不查看已删除的评论,那么仅凭accessible_by范围可能是不够的,可能更好的是使用带有开关的accessible_by在模型上创建范围,无论是否他们选择查看或不查看已删除的评论。
@user.comments.viewing_deletes(true).accessible_by(current_ability)
其中,viewing_deletes是注释的范围,用于查找“已删除”的注释以及其余的true和非删除注释的false。