我有这段代码:
can :create, Project { |instance| some_statement }
稍后我想添加这样的条件:如果用户可以创建一些Project
,那么他可以阅读ProjectTemplate
。但我不能这样做:
if can? :create, Project
can :read, ProjectTemplate
end
因为if-condition总是如此。另外,我不能只是把它? :create
,Project.new,因为在我的:create, Project {}
声明中不仅仅是.new object
。
有什么建议吗?我做错了吗?
答案 0 :(得分:0)
要以稍微不同的方式查看它,您是否可以没有用户能够创建项目的角色(例如project_creator),然后只使用以下
if user.role? :project_creator
can :create, Project { |instance| some_statement }
can :read, ProjectTemplate
end
我意识到这并不是你想要的,但我认为一个明智的人群阅读模板并不是一个安全风险?
我对创建项目有条件感到有点困惑,实例语句意味着某些逻辑正在应用于特定实例。但是,如果尚未创建项目,则没有实例?
我使用该方法的方式类似于以下
can [:read], User do |thisuser|
thisuser == user
end