Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

Rails 日記App制作 ~完成だ!!~

コードを更新して、index 一覧から各投稿の詳細を表示しようとする【1回目の時だけ】
エラーとなる。謎。
以下エラー画面の抜粋



直すところ
showアクションの記述エラー。初回だけ
## Action Controller: Exception caught
### ArgumentError in Posts#show
##### First argument in form cannot contain nil or be empty

<div class="p-comment__formBox">
  <p class="p-comment__formTitle">コメント記入</p>
  <%= form_for comment do |f| %>
    <%= f.hidden_field :post_id %>
    <div class="form-group">
      <%= f.label :name, '名前' %>

Trace of template inclusion: app/views/posts/show.html.erb

空の投稿時のvalidationメッセージが二重で出てしまう
viewファイルを見たら、繰り返し処理で直接表示する記述と、renderで呼び出す記述の二つがあった
タグ機能を「投稿編集画面」からも追加できるようにする
現在は「新規投稿時」しかタグをつけれない
難しい。。これとか参考になりそう
qiita.com

DBのプロパティからフィルタリングできるようにする
投稿者名とか、投稿日時とか

あとで調べよ

DBのテーブルの中身を全削除して、作り直す
現在作成済みのtableの一覧を、Active Recordで確認する

  • 作成済みのModelを確認する

作成したModelを表示

# 自分のユースケース的にはこれが良かった。全テーブル名を取得して、
tables = ActiveRecord::Base.connection.tables
# こんな感じでmapしてテーブル名からモデルクラスをたどる。
tables.map(&:classify).map(&:safe_constantize).compact

rails consoleでModelを指定し、全レコードを削除

$ rails console> Post[モデル名].delete_all


rails consoleでデータを全て削除するよ!
rails consoleを起動して、全てのデータを削除(destroy)する時

User.find(1).destroy
User.find(2).destroy
User.find(3).destroy

のように一々findで消したいデータのIDを指定して削除していた。とても面倒だし時間がかかる(例えばデータが莫大な数あったら、その分だけ入力して…という作業を繰り返す必要がある。)

そこで、全てのデータを一気に削除する方法を調べてみた。

User.delete_all
おおお、簡単。調べる前にUser.all.destroyで削除出来るのかな、と思って試してみたけどエラー。全てのデータを削除する時はdestroyではなく、deleteになるのね。

最後に新規作成したいデータをseeds.rbにかいて流し込む

$ rails db:seed