cancan能力 - 只读取/管理一个特定实例?

时间:2012-02-24 16:47:33

标签: ruby-on-rails cancan

对不起 - 大脑迷雾!

我们有一个使用cancan的rails应用程序。现在我们有一个菜单可以做这种事情:

<%= link_to "Devices", devices_path if can? :read, Device %>

但是,如果此人可以阅读所有设备,那就太棒了......但如果此人只能阅读一个特定设备,则会失败。我们正在使用角色对象。

我们如何根据用户可以:读取一台设备的事实采取行动?

1 个答案:

答案 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