認証用プラグイン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 %>


ここまでできました。

あとは、ログインのアクションのところでセッションに保持ってる内容を確認
→ユーザ全体を保持しているなら、管理者フラグもそのまま取得できそう