我的目标是创建一个只能由具有特定role
的用户访问的范围,在本例中为“编辑器”。或者更确切地说是管理员和编辑。
我正在使用设计。这是我尝试的一部分:
scope "/editor" do
devise_for :editors
# ...other routes
end
通过“rails server”运行时:
/home/user123/.gem/ruby/2.4.1/gems/activesupport-5.1.3/lib/active_support/inflector/methods.rb:269:in `const_get': uninitialized constant Editor (NameError)
我该如何解决?
答案 0 :(得分:0)
我认为你误解了scope
论证的使用。如果要限制某个视图中的访问权限,可以执行以下操作。假设您有一个视频流服务,常规用户只能访问索引并显示操作/视图,但管理员可以查看其余内容(new
edit
等...)。
您在app/controllers/concerns/
提出疑虑(google DRY)并将其命名为admin.rb
module IsAdmin
extend ActiveSupport::Concern
def admin?
return redirect_to videos_new, alert: "Access Denied" unless current_user.admin?
end
end
现在在您的videos_controller.rb中包含我们刚刚提出的问题,并告诉控制器您要使用管理员的视图?方法
Class VideosController < Applicationcontroller
include IsAdmin
before_action :admin?, only: [:new, :edit]
end