对不起 - 大脑迷雾!
我们有一个使用cancan的rails应用程序。现在我们有一个菜单可以做这种事情:
<%= link_to "Devices", devices_path if can? :read, Device %>
但是,如果此人可以阅读所有设备,那就太棒了......但如果此人只能阅读一个特定设备,则会失败。我们正在使用角色对象。
我们如何根据用户可以:读取一台设备的事实采取行动?
答案 0 :(得分:2)
在您的控制器中假设:
@device = Device.find_by_user_id(current_user.id)
并在你的视图中:
<%= link_to "Devices", devices_path if can? :read, @device %>
并在cancan的能力档案中:
class Ability
include CanCan::Ability
def initialize(user)
can :read, Device, :user_id => user.id
end
end
更多详情请参阅https://github.com/ryanb/cancan/wiki/Defining-Abilities