所以我的问题是如何根据当前用户的角色实现手写助手。
在请求时更改行为会效率吗?例如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
感谢您的时间和想法。
答案 0 :(得分:0)
我认为这根本不会起作用。在开发模式下,它可能会表现,但在生产中,代码不会随着每个请求从头开始加载。这意味着第一个请求将加载正确的模块,但在此之后,下一个请求可能会加载第二个模块,然后就会发生冲突。
关于如何避免使用switch语句或if语句,我没有一个好的答案,但是怀疑类继承系统是不是模块包含的方法。