2011-03-03 58 views
4

我使用設計並創建了兩個模型,Doctor和Patient。 當我寫load_and_authorize_resource康康舞給出了一個例外我可以使用康燦與許多資源?

undefined local variable or method `current_user 

如何使用康康舞爲他們兩個?

回答

0

你可以找到設計和慘慘這裏的完整的配置:Part 1Part 2

+0

日Thnx。 但只需要定義方法(在我的情況下設計爲:醫生和devise_for:患者) def current_user return current_doctor || current_patient 結束 – Andrey 2011-03-05 21:27:54

+0

是的,這只是一個全面的幫助,因爲它可能不是唯一缺少的東西。 – tommasop 2011-03-06 11:42:37

4

有一個在應用程序控制器稱爲current_ability方法,你可以簡單地覆蓋它。

Changing current_ability documentation

它會是這個樣子

def current_ability 
    @current_ability ||= Ability.new(current_user) 
end 

但你可以將其更改爲

def current_ability 
    if current_doctor 
    @current_ability ||= Ability.new(current_doctor) 
    else 
    @current_ability ||= Ability.new(current_patient) 
    end 
end 

這將允許初始化方法在應用程序/模型/ ability.rb根據情況接收current_patient或current_doctor。 你可以自定義它看起來像這樣

class Ability 
    include CanCan::Ability 

    def initialize(resource) 
    if resource.class == Patient 
     can, Read Something 
     can, Edit Other 
     . 
     . 
     . 
    else 
     can, Read Something 
     can, Edit Other 
     . 
     . 
     . 
    end 
     . 
     . 
     . 

我希望這種幫助,你還可以看到康康舞Full doc

相關問題