2012-02-24 52 views
3

對不起 - 在大霧中!cancan能力 - 只讀取/管理一個特定實例?

我們有一個使用康康的rails應用程序。現在,我們有做這種事情的菜單:

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

但是,這是巨大的,如果人可以閱讀所有設備......但如果這個人只能讀一個特定的設備出現故障。我們正在使用角色對象。

我們如何處理用戶可以:閱讀一個設備?

回答

2

假設在你的控制器:

@device = Device.find_by_user_id(current_user.id) 

,並在您的視圖:

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

,並在康康舞的能力文件:

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