LoginSignup
11
10

More than 5 years have passed since last update.

ActiveAdmin と RailsAdmin (ついでに CanCan 2.0)

Last updated at Posted at 2014-01-20

違いがよくわからなかったのでとりあえず ActiveAdmin を入れてみたら、いきなり CSS が全域に影響を及ぼしたのでびっくり。するとこれは、Webアプリに管理画面を追加するものではなくて、管理画面Webアプリそのものを作るための gem なのかな、と思ったのだけどその割にパスは /admin 以下になったりするし、 gem として軸がぶれていると感じたのでそれ以上試さずに消してしまいました。
そのあと RailsAdmin 入れてみたら admin 以下が Engine になっていて本体に影響しないし、特に問題なく便利に使えています。みんな RailsAdmin 使えばいいと思いました。

ところで RailsAdmin は CanCan 2.0 に対応していない。これについては別途エントリを立てて纏めたい (いやむしろ RailsAdmin に pullreq 出したい) ところだが、ひとまずヒントだけ出しておきます。

config/initializers/rails_admin.rb
module RailsAdmin
  module Extensions
    module CanCan
      class AuthorizationAdapter
        def authorize(action, abstract_model = nil, model_object = nil)
          @controller.current_ability.authorize!(action, model_object || abstract_model && model_name(abstract_model.model)) if action
        end
        def authorized?(action, abstract_model = nil, model_object = nil)
          @controller.current_ability.can?(action, model_object || abstract_model && model_name(abstract_model.model)) if action
        end
        private
        def model_name(model)
          model.to_s.underscore.pluralize.to_sym
        end
      end
    end
  end
end
app/models/ability.rb
    alias_subject 'rails_admin/main', to: :rails_admin
    can :access, :rails_admin
    can :dashboard, :all

see also: http://qiita.com/kuboon/items/1d009e2f89729fe5db78

11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10