2012年11月30日金曜日

Rails3.2.8 Rails_adminとdeviseを共存させる

0から自分で書くのは重複してしまうので、
  • 手順1
    まずはこのページにあるとおり
    rails_adminを導入
    ※その際に、2箇所確認で聞かれるので、
    ?  What would you like the user model to be called? Press  for [user] > admin
    …
    ?  Where do you want to mount rails_admin? Press  for [admin] > app_admin
    と応える。これでmodelをadminでマウント先をapp_adminにした。app_adminにしないとdevise側の処理がごっちゃになるらしい。
  • 手順2
    次にdeviseの普通のユーザーログインをつくる(もしomniauthを使うなら自分はここで作った、順番は関係ないけど念のため)
    $ rails g devise user
    $ rake db:migrate
    
    config/initializers/rails_admin.rbに以下を追加
    RailsAdmin.config do |config|
      config.authenticate_with do               #追加
        authenticate_admin!                         #追加
      end                                                      #追加
    
    initializerを変更したため、もう一度サーバーを起動
    $ rails s
    
これで管理画面とuserのログインがわかれた。
rails g devise:viewsすれば、deviseのインターフェイスを変更できる。
ログイン画面に関しては、リダイレクトされるところは/users/で同じだが、裏では上記の設定のおかげで、違うtableにちゃんと保存されて、 切り分けられてる。

それにしてもmongoidラクだなー。rake db:migrateをいちいちする手間もないし。
参考== http://d.hatena.ne.jp/hichiriki/20120126