これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。
##今回やったこと
わりと思い付きで管理者権限2種類をUserモデルに追加した。
$ bin/rails g migration add_admin_to_users admin:boolean
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
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などの制約の設定
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
マイグレーションを実行して、平日だし今回はここまで。
次回の記事>>