Projeto: Vermelho

logs of development
<< Pinterestっぽいレイアウト(CSS) | main | usernameで表示させる >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | -
DeviseとRails_adminで管理者権限をつける
まず、DeviseでAdminモデルを作る.

http://atotok.net/note/rails/?Devise%A4%C7%B4%C9%CD%FD%BC%D4%A4%F2%C4%C9%B2%C3


Deviseで2種類のロールを利用できるように、通常のユーザーとは別に管理者を追加出来るようにする。

Adminモデルを作成

$ rails generate devise Admin
      invoke  active_record
      create    db/migrate/20111226100548_devise_create_admins.rb
      create    app/models/admin.rb
      invoke    test_unit
      create      test/unit/admin_test.rb
      create      test/fixtures/admins.yml
      insert    app/models/admin.rb
       route  devise_for :admins

Adminモデルが作成される

class Admin < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
end

20111226100548_devise_create_admins.rb

class DeviseCreateAdmins < ActiveRecord::Migration
  def change
    create_table(:admins) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :admins, :email,                :unique => true
    add_index :admins, :reset_password_token, :unique => true
    # add_index :admins, :confirmation_token,   :unique => true
    # add_index :admins, :unlock_token,         :unique => true
    # add_index :admins, :authentication_token, :unique => true
  end

end

routes.rbに下記の行を追加

  devise_for :admins

adminsにはnameがないので、field :name, :type => String, :default => ""を追加しておく(viewでエラーになる)
次に、Rails_adminの設定をする.


Gemfile に下記を追加して、

gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'

bunlde install後、generate する。

$ bundle install
$ rails g rails_admin:install

(管理者)ユーザのモデルは user で良い?rails_admin どこにマウントする?とか訊かれるので答える。

今回は、ユーザは admin, マウントは app_admin とする(後者も admin にしたいが、それだと Deviseのユーザ認証とパスが被ってリダイレクトループする。パスの方を admin にしたければ、ユーザのモデルを admin_user にするという手もある)。

           ?  What would you like the user model to be called? Press <enter> for [user] > admin
…
           ?  Where do you want to mount rails_admin? Press <enter> for [admin] > app_admin

Deviseが入っていなければ、Deviseのセットアップも同時に行われる。


Devise用に表示されるメッセージも読んでおく事。今回は Deviseの設定無しでいきなり作ったので、メッセージ通りに設定してみる。


config/environments/development.rb に下記を追加。

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
この状態でサーバを起動し、localhost:3000/app_admin にアクセスして Sign upすると、管理画面に入れる(Deviseの設定にもよりけりだが、今回はデフォルトのままなのでこの動作)。
| Pg_Rails | 14:49 | comments(0) | trackbacks(0)
スポンサーサイト
| - | 14:49 | - | -
コメント
コメントする









この記事のトラックバックURL
http://vermelho.jugem.jp/trackback/176
トラックバック