使用cancan与gems控制器

时间:2012-10-03 07:12:06

标签: ruby-on-rails

首先抱歉我的英语不好。 我已经安装了cancan和bigbluebutton_rails, https://github.com/mconf/bigbluebutton_rails。 宝石bigbluebutton_rails有一些模型和控制器,用于 示例有bigbluebutton / servers_controller.rb。 此控制器具有一些操作,如创建,加入,授权等。 我希望只有具有角色管理员的用户才能创建。 我能做什么? 我需要将load_and_authorize_resource放在bigbluebutton / servers_controller.rb中? 但它在宝石中,我认为不建议修改宝石代码。

3 个答案:

答案 0 :(得分:2)

他们有一个与cancan集成的页面:https://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Integrate-with-CanCan

但是嗯,还没写完......

所以......他们还有一个与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

答案 1 :(得分:0)

在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

答案 2 :(得分:0)

补充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-v2https://github.com/mconf/mconf-web/tree/branch-v2)中的版本使用CanCan,Devise和BigbluebuttonRails,它们一起工作。