2010-04-06 81 views
0

所以我的問題是如何實現基於當前用戶角色的角色的助手。實現基於角色的助手

高效在請求時改變行爲嗎?例如幫手莫名其妙地算出用戶的角色,幷包括適當的SubModule?

module ApplicationHelper 
    module LoggedInHelper 
     # Some functions 
    end 

    module GuestHelper 
     # The Same functions 
    end 

    # If User is Guest then include GuestHelper 
    # If User is LoggedIn then include LoggedInHelper 

end 

這種方法效率高嗎?是嗎導軌方式?我有一大堆的行爲像這個功能,我不希望他們包裝的每一個在if語句

def menu_actions 
    if current_user.nil? 
     # User is guest 
     { "Log in" => link_to "Login", "/login" } 
    else 
     # User is Logged In 
     { "Log out" => link_to "Logout", "/logout" } 
    end 
end 

謝謝您的時間和想法。

回答

0

我不相信這會很好地工作。在開發模式下,它可能會表現出來,但是在生產中,每次請求都不會從頭開始加載代碼。這意味着第一個請求會加載適當的模塊,但在此之後,下一個請求可能會加載第二個模塊,然後會發生衝突。

對於您如何避免switch語句或if語句,我沒有一個很好的答案,但懷疑類繼承系統將是取代模塊包含的方式。

相關問題