認証用プラグインrestful_authentication+ユーザーテーブル拡張
restful_authenticationが作成するusersテーブルを元に、カラムを追加して動作させてみる。
①スキーマファイルを作成(200807xxxxxx_update_users.rb)してmigrate →テーブル構成更新
class UpdateUsers < ActiveRecord::Migration def self.up # usersテーブルカラム追加 add_column :users, :name, :string, :null => false add_column :users, :division_name, :string, :null => false add_column :users, :retire, :boolean, :default => false, :null => false add_column :users, :admin, :boolean, :default => false, :null => false end def self.down # usersテーブルカラム削除 remove_column :users, :name remove_column :users, :division_name remove_column :users, :retire remove_column :users, :admin end end
②モデル(user.rb)を修正。追加したカラムの分を追記
# prevents a user from submitting a crafted form that bypasses activation # anything else you want your user to change should be added here. attr_accessible :login, :email, :password, :password_confirmation, :name, :division_name, :retire, :admin
③ユーザ登録画面(view/users/new.html.erb)を修正
"login"というのがキー情報として扱われているようなので、そこをアプリでのキー情報(例えば社員番号)とする。
<%= error_messages_for :user %> <% form_for :user, :url => users_path do |f| -%> <p><label for="login">社員番号</label><br/> <%= f.text_field :login %></p> <p><label for="name">氏名</label><br/> <%= f.text_field :name %></p> <p><label for="email">Email</label><br/> <%= f.text_field :email %></p> <p><label for="password">Password</label><br/> <%= f.password_field :password %></p> <p><label for="password_confirmation">Confirm Password</label><br/> <%= f.password_field :password_confirmation %></p> <p><%= submit_tag 'Sign up' %></p> <% end -%>
④ログイン後に表示する画面(view/portal/index.html.erb)にて、氏名を表示するようにしてみる。
<h1>Portal#index</h1> <p>Find me in app/views/portal/index.html.erb</p> <p><%= current_user.name %>さん、ようこそ</p> <%= link_to 'ログアウト', logout_url %>
ここまでできました。
あとは、ログインのアクションのところでセッションに保持ってる内容を確認
→ユーザ全体を保持しているなら、管理者フラグもそのまま取得できそう