rolerequirementプラグイン
roleを取り入れたいと思い、プラグインを探してみたところ、rolerequirementというプラグインが見つかったので、早速試してみました。
script/plugin install git://github.com/timcharper/role_requirement.git
インストール後、roleを表すRoleクラスを作成します。すでにrestful_authenticationを使用していた為、userというモデルができており、下記を実行後に「rake
db:migrate」を行うことにより、roles、roles_usersという2つのテーブルが生成されます。
script/generate roles Role User
mysql> desc roles; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> desc roles_users; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | role_id | int(11) | YES | MUL | NULL | | | user_id | int(11) | YES | MUL | NULL | | +---------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
あとはroleをuserに割り当てます。今回はroles、role_usersに対してSQLで直接レコードをinsertしました。
次に、各コントローラに対して必要なroleを設定していきます。
class RolesController < ApplicationController layout "master" before_filter :login_required require_role "admin"
あとは、roleが付与されたユーザ、付与されていないユーザを使用してテストを行います。権限がない場合は「You don't have access here.」と表示されます。