avosalmonのブログ

プログラミングやWebデザイン、DTMについて調べたことをメモってます。プログラマー兼ベーシストです。

【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のブログ