cancan在单页面应用程序上

时间:2013-05-29 06:33:01

标签: ruby-on-rails ruby-on-rails-3 backbone.js cancan

在单页应用程序(backbone.js)上检查能力的正确方法是什么?

E.g。如果它是非单页面应用程序,我可以在模板上写一下

<% if can :read? @resource %>
  <%= link_to @resource %>
<% end %>

但我的问题是,当我渲染客户端模板时,我还没有加载@resource

1 个答案:

答案 0 :(得分:3)

通常,将在客户端和服务器上执行访问控制。在服务器上,您可以按照正常情况在控制器中使用authorize!。在客户端,cancan不可用。

可能的解决方案:

  1. can?可用的服务器上呈现视图片段。我不认为这种方法对骨干有很大意义。
  2. 公开“cancan查询”的API
  3. 在客户端上复制您的能力对象
  4. 我倾向于暴露API,但如果网络出现性能问题,我猜你必须在客户端复制你的能力对象。

    这似乎是客户端应用程序如何工作的一个很好的例子!