如果能?在Ruby on Rails中

时间:2013-06-02 17:55:55

标签: ruby-on-rails ruby

在我从某人那里继承的Ruby on Rails应用程序中,我有类似的代码

<% if can? :create, :objects %>
<%= link_to 'Add New Object', new_object_path %>

此Web应用程序具有登录名,用户具有在名为groups_roles的表中定义的不同权限(组(例如,admin,user)具有哪些角色(例如添加新对象))

我想添加新权限,那么我该怎么做?这些东西在哪里定义? Ruby如何知道从哪个表中获取不同的权限,以及它如何知道上面代码中的:create:objects是什么?

2 个答案:

答案 0 :(得分:5)

该应用程序似乎正在使用ryan bates的cancan gem。您可以在app/models/ability.rb文件中指定权限。

它只是读取能力文件以确定用户是否可以执行某些操作。这些操作直接对应于您在控制器类中定义的操作。

Cancan在其github存储库中有一个很棒的维基。此外,ryan的截屏视频是一个很好的开始。

答案 1 :(得分:2)

我不知道应用程序是如何工作的,但can?来自cancan gem。请参阅screencast