#70 10/9-12 Eventsのカラム変更
日程 e_date :date
時間 e_time :time
場所 e_place :string
楽しみ方 e_enjoy :string
文章 e_content :text
rails destroy migration AddColumnsToEventsで削除を行い、
rails g migration AddColumnsToEvents e_date:date e_time:time e_place:string e_enjoy:string e_content:text でDBを作り上げる。
エラー
ActiveRecord::NoEnvironmentInSchemaError: というエラーが出たら、
db:environment:setしたらOK
migrationすると、
contentとかが被っているよ。というエラー
→e_を接頭につけることで解決(同じ名前のカラムはエラー!?)
DBが更新されていない。
→何故
hash:ActiveSupport::HashWithIndifferentAccess
htmlを覗いて見ると、
文字列(新宿〜)で登録されている
DBは、文字列 stringで登録しているからそこは問題なし。
→ていうよりは、保存されていないこと自体がだめ!?
おそらく、DBの型と入力されている項目の型が違うことによる
(StrongParameterではない気がする)
staticpagesに、問題があるかも
一つひとつの型違いというよりは、DBにそもそも保存されていない。
ことが問題
1.昔の_events.html.erbで記入しても、DBに保存されていない。
→DBのカラムや更新、もしくは他のcontrollerでミスっている可能性大
・paramsには入っている...
・DBのカラムを覗く
DBもたぶん間違っていないな。。
・コントローラー
event_controller.rbの、create
→間違えていない
form for ボタンを押したら、反映←ここでは!?
→formforも間違えていない
■小川さんアドバイスより解決
問題点は、events.rbのvalidateに、
e_content と しなければならない箇所を、昔のままcontentとして行っていた。
■解決方法
まずevents_controllerのcreateアクションにおいて、保存直前でbinding.pryを仕込みました。binding,pryで停止した状態で、コンソール上で @event.save!
を実行してみました。
※!が付いているのは、エラーが発生した際にログを出したいのでコンソール上では!を付けて実行しました。
そうすると、conetntは必須入力だとエラーが表示されましたので、formのカラム名との不一致を疑いエラーの解消を行うことができました
・save! !(感嘆符)の使い方について
https://qiita.com/ozin/items/5968971c9d2b3ab0a84d