[学習記録]Ruby on RailsでのWebアプリケーション作成

勤務表作成アプリケーション

学習内容

  • Web application作成
    • ユーザ認証機能の実装
      • CRUD
      • validation
      • session
      • remember digest
      • friendly forwarding
      • activation
      • password reset
    • HerokuでのSSL
    • Herokuでのメール送信
      • Mailgun
    • 勤務表機能の実装
      • ユーザモデルとの関係づけ
      • berofe_actionでのアクセス制御
      • ルート設定
      • 複数データの一括CRUD
        • Formモデルの作成
        • parameterの取り出し
        • validation
      • クエリ
        • 環境ごとのクエリの使い分け
    • 画面作成
      • form_withでの引数を伴った画面遷移
      • Bootstrapの使用
      • 登録データに描画内容を対応させる
      • ユーザと描画内容を対応させる
      • 休祝日の対応
        • ヘルパーメソッドの使用

機能概要

  • ユーザまわりの機能
  • 勤務表まわりの機能

    • 一括登録機能は→ こちら を参考に実装
    • 登録済みの場合は登録画面を表示しないようにする
      • 作成ボタンを表示しない & 画面以外から入ろうとしてもredirect_toで返す
    • 日付は対象の年月から配列を作成して,valueに設定する
      • 編集しないように,readonly: true, tabindex: -1を設定する
    • 新規登録時は,年月と時間の既定値をフォームで送って設定できるようにする
    • 一括更新
      • 既存のデータのリンクのみ生成する
        • ユーザモデルにクエリを実行するメソッドを追加して,それを呼び出す
          • 各月の初日(1日)のデータのみ取得して,そこから年月を取得している
            • 本番環境ではpostgresqlでextractを使えるが,ローカルのsqlite3では使えないため,環境によって分岐させている
        • default_scopeでorderを設定し,勤務日について昇順で並ぶようにする
      • paramsをhashに変換して,eachで1つずつvalueを取得し,update_attributes
      • url, methodはyieldで取得するように変更
        • 登録フォームをパーシャルに切り出して,登録・更新・参照で共用
        • methodをputにすることでcontrollerのupdateを呼べるようになる
    • 一括削除
      • 対象のデータを取得して,1件ずつdestroy
      • 既存のデータの削除リンクのみ生成する
    • Formの基底を用意して,それを継承するcollectionクラスを作成する
      • 作成・更新・参照画面では,collection クラスのインスタンスを生成
        • form_for
        • fields_for
    • 曜日・祝日の取得
      • 祝日の取得
      • 休祝日の場合は,formに色をつけ,時間は00:00を設定する
        • class名, valueをhelper methodで取得する
    • flashでメッセージを1度だけ表示
  • 実装におけるtips

    • routeで階層は作る必要ない
      • modelで関係を設定済み.routeでは不要
    • rails routesで確認
    • debugger
    • rails db:seed --trace
    • form_with
      • local: trueにしないとdefaultがremoteなので画面遷移してくれない
        • serverを1度止めないと反映されない
    • ユーザに有効期間を追加するだけして使っていない
      • ブランチ切るべきだった
    • RailsはWebでの検索で出るノイズが多く感じた