
じろう
学習履歴詳細
[卒業制作]Logの投稿確認画面のデザイン。その他画面のデザイン微調整。userとlogのバリデーション。accepts_nested_attributes_forでネストした子モデルの更新時に、presence: trueをかけたいが、reject_if all_blankがあると、バリデーションかかる前に子自体が削除されてしまいバリデーションに引っかからなかった。
やったこと
Logの確認画面のデザイン当て
indexと同じような感じにした。カードは開いてる状態で見やすいように
エラーメッセージの表示に関わるので辞書ファイルでいくつか日本語化
logとuserのバリデーション
ended_on > started_onのバリデーション
when_to_do > ended_onのバリデーション
マイページのYWTカウント数がうまくいってなかったのを修正
プログレスバーの計算式修正
Google認証のときはメール確認をSkipするように
あと何expの表示をプログレスバーの外に設置
学習時間の合計をマイページに表示
deviseのパスワード最低文字数を6→8
deviseのアラートに色付け
わかったこと
子モデルのカラムについてバリデーションを追加する際の書き方で、
errors.add(Todo.human_attribute_name(:when_to_do), "は終了日以降の日付を選択してください") if ended_on > t.when_to_do
Todo.human_attribute_name(:when_to_do)
という書き方がポイント。そのまま:when_to_doは使えない(Logのモデルに書いてるので)
かといって、log.todosを展開して、todos.when_to_doと書いてしまうと、カラム名ではなく日付がそのまま取得されてしまう。
t("activerecord.attributes.todo.when_to_do")
じゃ駄目だった。
わかったこと、のtitleにpresence: trueを追加したかったけど、これがなかなかうまく行かない。
原因は、accepts_nested_attributes_for
のreject_if: :all_blank
で、これがあると、子モデルの中身がすべてblankだったら、削除してしまう。
やったこと、や次やることにはデフォルトでやった時間(worktime)や期限(when_to_do)が入ってるから、タイトルや詳細が空でも削除されることはないが、わかったことにはそのようなカラムがないので、どちらも空の状態となり、何も入力してない状態で送信ボタンを押すとわかったこと自体が削除されてバリデーションがかからない。
accepts_nested_attributes_for :knowledges, reject_if: proc{ |attributes| attributes['title'].nil? }, allow_destroy: true accepts_nested_attributes_for :dones, :todos, reject_if: :all_blank, allow_destroy: true # 親のレコードを更新時に子のレコードも保存される
と、accepts_nested_attributes_for
を2行にして、わかったこと(knowledges)のほうにはreject_if:にprocを与え、blankではなくnil?で条件判定をさせる。空文字が入っていればnilはfalseを返すので削除されない。削除されないのでその後のバリデーションにも通すことが出来る!
一覧画面→編集画面に遷移時、Bootstrap-tags-inputのjQueryがうまく動いていないので、turbolinkを編集画面でのみoffにした→無事動いた
【CSS】要素を右寄せにする場合は「margin-right:0」
/* 右寄せ */ #sample1 { margin-left: auto; margin-right: 0; }
これだけで→寄せできることが分かった。しかもレスポンシブ的にもこっちのほうがよさそう
検証ツールから直接当たってるクラスを調べて、deviseのアラートに色付けできる
deviseのパスワードの最低文字数は、configのdevise.rbをいじる
次やること
各ページのデザインの微調整
レベルアップのアニメーション?
ランディングページの作成
ナビゲーションバーを整える
margin-rightとかfloat-rightについて調べる
要件定義から変えたところをまとめてメンターに送る準備
2020年05月17日(日)
9.5時間