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 正确的 Hostnil,具体取决于用户是否是主持人。将其定义为 helper_method 允许您在视图中使用它!

编辑
或者你可以使用三元!

def current_host
  current_user && current_user.is_host ? current_user.host : nil
end