通常情况下,使用acts_as_paranoid,当您使用find
或where
等查找程序时,它会排除具有deleted_at
(或您命名为删除列的任何内容)值的条目,而不是空值。但是,我创建了一个用户权限,允许用户查看和操作数据库中的“已删除”(请参阅:隐藏)实体。事实上,每当我想要运行find
,where
或者你拥有什么时,我都需要检查权限,如果你有这个权限,请使用{{ 1}}而不是让一个地方检查act_as_paranoid逻辑是否应该开始工作,并且当该逻辑不应该时,总是添加with_deleted
。
有没有办法实现这个,或类似的东西,使它全部干?
答案 0 :(得分:2)
您可以使用cancan。这允许您定义能力。 然后,您可以定义:
if user.admin?
can :manage, User.with_deleted
else
can :manage, User
end
然后您可以使用:
在控制器中进行选择User.accessible_by(current_ability)