Ruby 具有第二设计模式的专家

Ruby 具有第二设计模式的专家,ruby,ruby-on-rails-3,devise,pundit,Ruby,Ruby On Rails 3,Devise,Pundit,我使用pundit gem管理应用程序中用户的授权。对用户来说一切都很好。现在我创建了第二个设计模型:雇主。我想向登录用户和登录雇主显示一个特定页面。我该怎么做 以下是我对该模型的政策: class CurriculumPolicy < ApplicationPolicy class Scope < Scope def resolve scope.all end end def create? return true end

我使用pundit gem管理应用程序中用户的授权。对用户来说一切都很好。现在我创建了第二个设计模型:雇主。我想向登录用户和登录雇主显示一个特定页面。我该怎么做

以下是我对该模型的政策:

class CurriculumPolicy < ApplicationPolicy
  class Scope < Scope
    def resolve
      scope.all
    end
  end

  def create?
    return true
  end

  def show?
    record.user == user || user.admin
  end

  def update?
    record.user == user || user.admin
  end

  def destroy?
    record.user == user || user.admin
  end
end
课程政策
这是我想要访问的索引页的控制器:

class CurriculumsController < ApplicationController
    skip_before_action :authenticate_user!, only: [:new, :create, :index]
    before_action :set_curriculum, only: [:show, :edit, :update, :destroy]

  def index
    # @curriculums = policy_scope(Curriculum).order(created_at: :desc)
    if params[:query]
  @curriculums = policy_scope(Curriculum).joins(:user)
               .where('users.job_category ILIKE ?', "%#{params[:query]}%")
               .where(
                 'job_category ILIKE :query', query: "%#{params[:query]}%"
                )
    else
    @curriculums = policy_scope(Curriculum).order(created_at: :desc)
    end
  end

  private

   def set_curriculum
      @curriculum = Curriculum.find(params[:id])
    end

  def curriculum_params
      params.require(:curriculum).permit(:doc)
  end

end
课程控制器
对于每个操作,您都可以在此处找到如下解决方法

def show?
  true if @user.class.table_name == "employees"
end

问题是什么?“如何将
当前用户
设置为
员工
,而不是
用户
”?是,但同时保持用户模型身份验证。你知道怎么做吗?你还没有展示任何与雇主相关的代码。所以我真的不知道你尝试了什么,或者你被困在哪里了。在不知道雇主是如何实施的情况下,我不知道如何实施。