じろう

2019年11月02日に参加

学習履歴詳細

[卒業制作]Yだけ、Wだけ、Tだけ……という形の絞り込みを実装しようと、一度やったことある方法で試すも色々な問題が判明。解消するにはどうしたらいいか考えるも自信がないので相談する。コントローラを分けるという考え方を教えてもらい、一歩前進。実装の流れが見えてきた。

やったこと

絞り込み検索実装のため、以前万葉の課題をやった時と似たようなコードを書いてみるが、うまくいかない
current_user.donesという形で取得して表示するも、なぜかDonesがないものまで取得されてしまう
↑の原因を探る
絞り込み検索で、期待する動作を書いてみる
それを実装するために必要なコードを考える
考えるも、いまいち自信がないのとActive RecordでLogs.donesのような取得の方法が分からないので質問を投げようとする
井上さんに思い切って相談する
コントローラに関するRails作者の考えを読む

わかったこと

万葉の課題と一緒じゃ駄目な理由→Logの下にある3つのテーブルの有無を絞り込みの条件とするので、勝手が違う。
donesがないものまで取得されてしまっていたのは、実際にはDonesが作られてるけど表示されないだけ(worktime==0しかないdonesテーブルはviewで表示していなかった)
default値が0に設定されてるからdonesが−ボタン押しても削除されてない……と思ったら、titleのバリデーション作成前に作ったレコードだからだった
1つのコントローラにはCRUD機能以上のものを実装しない。コントローラは機能ごとに細かく分ける。
今回の場合だと、例えばDonesを検索するならLogの中で新しいアクションを作って追加するのではなく、Donesを検索して表示するんだからDonesのコントローラを作ってそのshowで検索し絞り込んだ結果を表示すればいい
ボタンにdones#showのようなリンクを貼って、遷移したviewにはDonesのみのカードが表示されてるページを用意すれば実装できそう
YとW……みたいな場合は、YとWを表示ボタンを作って、DonesAndKnowledgesControllerでShowアクションみたいな感じかな……
紙で整理して人に話して、アドバイスを聞くというのは自分の頭の中で整理されてやりたいことが明確になる

次やること

バリデーション設定後は必ずデータベースをクリーンな状態にする
コントローラにはcrud以上のものを書いていかない
説明が下手だからうまくなるためにどうしたらいいか調べる

Rails
Bootstrap

2020年05月20日(水)

2.8時間