【问题标题】:Implementing Role based Helpers实现基于角色的助手
【发布时间】:2010-04-06 07:15:32
【问题描述】:

所以我的问题是你将如何根据当前用户的角色来实现你的手写助手。

在请求时更改行为会高效吗?例如Helper 以某种方式找出用户的角色,并包含适当的 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

这样有效吗?是 rails 方式 吗?我有一大堆这样的函数,我不想将它们中的每一个都包装在 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

感谢您的时间和想法。

【问题讨论】:

    标签: ruby-on-rails authorization helpers


    【解决方案1】:

    我不相信这会很有效。在开发模式下,它可能会运行,但在生产中,代码不会随每个请求从头开始加载。这意味着第一个请求会加载正确的模块,但之后下一个请求可能会加载第二个模块,然后就会发生冲突。

    对于如何避免 switch 语句或 if 语句,我没有很好的答案,但我怀疑类继承系统将是替代模块包含的方式。

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2020-02-28
      • 1970-01-01
      • 2019-09-03
      相关资源
      最近更新 更多