草野球の出欠確認Webアプリを作ろう! part.2


これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。

<<前回の記事

今回やったこと

わりと思い付きで管理者権限2種類をUserモデルに追加した。

$ bin/rails g migration add_admin_to_users admin:boolean
20210426163341_add_admin_to_users.rb
class AddAdminToUsers < ActiveRecord::Migration[6.1]
  def change
    add_column :users, :admin, :boolean, default: false
  end
end
$ bin/rails g migration add_sub_admin_to_users admin:boolean
20210426163516_add_sub_admin_to_users.rb
class AddSubAdminToUsers < ActiveRecord::Migration[6.1]
  def change
    add_column :users, :sub_admin, :boolean, default: false
  end
end

今回作成している出欠確認アプリでは、スーパーアドミニストレータ(=私)がチームの代表1名にアドミニストレータ権限(admin = true)を与え登録するところをスタートと考えています。
その後チームの代表者がメンバーを登録していく際に、サブリーダーや副代表などのチームの首脳クラスのメンバーに「疑似的に」アドミニストレータ権限を付与するときに使用する目的で、2種類のフラグを用意した。
(私がアドミニストレータ権限を付与したユーザーが失踪したケースについては、運用保守が必須となってしまうため、この点はもう少し考慮の余地がある)

スケジュールモデルの作成

出欠の管理をするアプリなので、スケジュールを扱うモデルの作成をする。

$ bin/rails g model Schedules title:string date_of:date start_time:time end_time:time meeting_time:time

※モデルのジェネレートの際、変数の型を指定するのに以下のWeb記事を参考にした。
Rails migrationで使うデータ型を考える

マイグレーションの前に、生成されたマイグレーションファイルを編集する。
(これから使いそうな変数を考えつつ、長い1行のコマンドを作るのはしんどいので、とりあえず作ってからマイグレーションする前に整えることにした)
以下のWeb記事を参考にした。
NOT NULLなどの制約の設定

20210426172035_create_schedules.rb
class CreateSchedules < ActiveRecord::Migration[6.1]
  def change
    create_table :schedules do |t|
      t.string :title, null: false, default: ''

      t.date :date_of
      t.time :start_time
      t.time :end_time
      t.time :meeting_time

      t.string :participant_id, null: false, default: ''
      t.string :absentee_id, null: false, default: ''
      t.string :holder_id, null: false, default: ''

      t.timestamps
    end
  end
end

本当は日付や時間にも制約やデフォルト値を用意したかったが、日付単体や時間単体のデフォルト設定について知識不足なので、下手に設定するよりも後追いでマイグレーションを追加したほうがよくなるような気がして断念した。

$ bin/rails db:migrate

マイグレーションを実行して、平日だし今回はここまで。
次回の記事>>