Rails 用户详细信息的角色持久性变量
Rails Role Persistence Variable for User Details
我有两种类型的用户 User 和 Host。每个主机也是一个用户,但每个用户都不是主机。
User(id, name, is_host = true/false)
Host(id, name, user_id)
就像登录后的 Devise 一样,我们如何使用 current_user 变量 我想创建一个类似的变量,当 is_host = true
时随处可用
我有一个名为 Host::HostController 的基本控制器,它具有作用域路径。
拥有此类变量的最佳做法是什么?
我会在 application_controller.rb
中添加以下代码:
class ApplicationController < ActionController::Base
helper_method :current_host
def current_host
if current_user && current_user.is_host
current_user.host
else
nil
end
end
end
这将 return 正确的 Host
或 nil
,具体取决于用户是否是主持人。将其定义为 helper_method
允许您在视图中使用它!
编辑
或者你可以使用三元!
def current_host
current_user && current_user.is_host ? current_user.host : nil
end
我有两种类型的用户 User 和 Host。每个主机也是一个用户,但每个用户都不是主机。
User(id, name, is_host = true/false)
Host(id, name, user_id)
就像登录后的 Devise 一样,我们如何使用 current_user 变量 我想创建一个类似的变量,当 is_host = true
我有一个名为 Host::HostController 的基本控制器,它具有作用域路径。
拥有此类变量的最佳做法是什么?
我会在 application_controller.rb
中添加以下代码:
class ApplicationController < ActionController::Base
helper_method :current_host
def current_host
if current_user && current_user.is_host
current_user.host
else
nil
end
end
end
这将 return 正确的 Host
或 nil
,具体取决于用户是否是主持人。将其定义为 helper_method
允许您在视图中使用它!
编辑
或者你可以使用三元!
def current_host
current_user && current_user.is_host ? current_user.host : nil
end