首先对我糟糕的英语感到抱歉。我已经安装了 cancan 和 bigbluebutton_rails, https://github.com/mconf/bigbluebutton_rails。gem bigbluebutton_rails 有一些模型和控制器,例如 bigbluebutton/servers_controller.rb。这个控制器有一些操作,如创建、加入、授权等。我希望只有具有角色管理员的用户才能创建。我能做些什么?我需要将 load_and_authorize_resource 放在 bigbluebutton/servers_controller.rb 中吗?但它在 gem 中,我认为不建议修改 gems 代码。
3 回答
他们有一个与 cancan 集成的页面:https ://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Integrate-with-CanCan
但是emmm,还没写。。。
所以......他们还有一个与 Devise 集成的页面:https ://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Integrate-with-Devise已经写好了,所以从中推断接受的方式是继承Bigbluebutton::ServersController
.
如何创建自定义服务器控制器,如下所示:
class CustomServersController < Bigbluebutton::ServersController
load_and_authorize_resource!
end
补充 Sam Peacey 的答案,现在 BigbluebuttonRails 有一个(相当简单的)wiki 页面,描述如何将其与 CanCan 集成:https ://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Integrate-with-CanCan
您还可以使用应用程序 Mconf-Web ( https://github.com/mconf/mconf-web ) 作为示例。当前分支中的版本branch-v2
( https://github.com/mconf/mconf-web/tree/branch-v2 ) 使用 CanCan、Devise 和 BigbluebuttonRails,所有这些都一起工作。
在 ruby 中你可以重新打开类,所以在 /config/initializers/bigbluebutton.rb 中放一些代码,上面写着
require 'bigbluebutton'
class Bigbluebutton::ServersController < ApplicationController
load_and_authorize_resource!
# you also have to overwrite this method so the @server loaded
# by CanCan is not overwritten by Bigbluebutton
def find_server
@server ||= BigbluebuttonServer.find_by_param(params[:id])
end
end