今週から人生初のオリジナルアプリの作成に取り掛かる。
作りたいアプリはグループ内で共有して使えるカレンダーアプリ。
コメント機能も実装して、グループ内でチャットもできるようにしたい。
昨日までの時点で一通りの企画と設計は完了。
usersテーブルの「所属名」と「部署名」は、同じ意味合いに気づき、所属名は削除することに。
早速rails newコマンド
でアプリを新規作成。
ここからの手順としては以下の通り。
1: Userモデル作成
2: Groupモデル作成
3: Calendarモデル作成
4: Commentモデル作成
というわけで、本日はUserモデルに取り掛かる。
rails g devise:install
とrails g devise user
を実行。
カラムを追加
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :department_name
バリデーションは以下の通り。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates :name, presence: true
validates :encrypted_password,:password,:password_confirmation,length:{minimum:6},format:{with: /(?=.[a-zA-Z])(?=.\d)[a-zA-Z\d]{6,}/}
validates :department_name, length: { maximum: 50 }
end
新規登録には、メアド、パスワード以外に名前も必須とした。
部署名は任意だが、文字数50文字までに制限している。
続いてビューファイルの追加。
rails g devise:views
を実行。
ローカルサーバーを起動してみる。
あれ?デフォルトのサインイン画面が出ない?
なにか間違っているのかと、30分位考えたが、
ルーティングとコントローラーを設定していなかっただけだった笑
初歩的ミス・・・
rails g controller users
を実行。
ユーザーの詳細ページをトップページにしようと思っていたいので、以下の2つを記述。
Rails.application.routes.draw do
devise_for :users
root to: "users#show"
resources :users, only: [:show]
end
class UsersController < ApplicationController
def show
end
end
さらにログアウト状態は常にログインページへ遷移させたいので、以下も記述。
class ApplicationController < ActionController::Base
before_action :authenticate_user!
end
できた!!
いつもの味気ないページ笑
という事で、装飾はまた明日。