【Rails4】deviseとactive_adminで一般ユーザーと管理者ユーザーを作成
先にactive_adminで管理者ユーザー作成(deviseもインストールされる)
Rails4でActiveAdminを使ってみる - zakihayaメモ
次にdeviceで一般ユーザー作成
Rails4 にて Devise でユーザー登録・ログイン認証・認可の機能を追加 | EasyRamble
一般ユーザーのフィールド追加
rails g migration AddColumnsToUsers
class AddColumnsToUsers < ActiveRecord::Migration def change add_column :users, :name1,:string, null: false, default: "" add_column :users, :name2,:string, null: false, default: "" add_column :users, :birthday,:date add_column :users, :zip,:integer, null: false, default: 12345678 add_column :users, :pref,:string, null: false, default: "" add_column :users, :address1,:string, null: false, default: "" add_column :users, :address2,:string, null: false, default: "" add_column :users, :address3,:string add_column :users, :tel,:string end end
bundle exec rake db:migrate
一般ユーザーのフィールドにvalidation(通常のvalidationと同じ)
app/models/user.rb
class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable validates :name1, presence: true validates :name2, presence: true validates :zip, presence: true validates :pref, presence: true validates :address1, presence: true validates :address2, presence: true validates :address3, presence: true end
追加したカラムをstrong_parametersに追加して、Controller経由でDBに保存できるようにする
Rails の認証プラグイン Devise での Strong Parameters について | EasyRamble
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception before_filter :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters [:name1, :name2, :birthday, :zip, :pref, :address1, :address2, :address3, :tel].each do |param| devise_parameter_sanitizer.for(:sign_up) << param end [:name1, :name2, :birthday, :zip, :pref, :address1, :address2, :address3, :tel].each do |param| devise_parameter_sanitizer.for(:account_update) << param end end end
active_adminの画面に一般ユーザーが表示されるようにする
rails generate active_admin:resource User
管理画面から編集可能なパラメータを設定。
# app/admin/user.rb ActiveAdmin.register User do permit_params :name, :address end
一般ユーザーのviewカスタマイズ
Ruby - DeviseでViewをカスタマイズする - Qiita
・メーラー設定
⇒今度書く
・deviseの日本語化
【Rails】deviseを日本語対応した - avosalmonのブログ