Ruby 具有第二设计模式的专家
我使用pundit gem管理应用程序中用户的授权。对用户来说一切都很好。现在我创建了第二个设计模型:雇主。我想向登录用户和登录雇主显示一个特定页面。我该怎么做 以下是我对该模型的政策: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
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
问题是什么?“如何将
当前用户
设置为员工
,而不是用户
”?是,但同时保持用户模型身份验证。你知道怎么做吗?你还没有展示任何与雇主相关的代码。所以我真的不知道你尝试了什么,或者你被困在哪里了。在不知道雇主是如何实施的情况下,我不知道如何实施。