createアクションでデータが保存できない
createアクションで入力したデータが保存できなかったのでその時の対処方法を自分用のメモとしておきます
その時のターミナル画面ですが
rollback transactionされていて保存されていない。。。。
Started POST "/to_dos" for 123.221.22.117 at 2021-04-10 00:11:45 +0000 Cannot render console from 123.221.22.117! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC ↳ /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.5/lib/active_record/log_subscriber.rb:98 Processing by ToDosController#create as JS Parameters: {"utf8"=>"✓", "authenticity_token"=>"pWgpBY_sKTjAASVnd7vamDS_ZwOeAIG5DBnqQjKrvlP_4Rt88FChC-xN_eiP907ekMXxuZlrYn5VXKxRfsQisA", "to_do"=>{"day"=>"4.23", "body"=>"訪問"}, "commit"=>"記録する"} (0.0ms) begin transaction ↳ app/controllers/to_dos_controller.rb:8 (0.1ms) rollback transaction ↳ app/controllers/to_dos_controller.rb:8 Rendering to_dos/create.js.erb Rendered to_dos/create.js.erb (0.6ms) Completed 200 OK in 34ms (Views: 6.6ms | ActiveRecord: 0.7ms)
行ったこと
「pry-byebug」を使用してデバックを行う
メモ
rbファイルではbinding.pry
erbファイルでは<% binding.pry %> と入力
やってみた結果
[1] pry(#<ToDosController>)> @to_do => #<ToDo:0x00007f7f49057ab0 id: nil, day: "4.24", body: "訪問", user_id: nil, created_at: nil, updated_at: nil>
考えた原因
user_idがnilになっているいるから保存できないのではないか
createアクションに赤ラインのコードがなかったので追加
def create @to_do = ToDo.new(to_do_params) @to_do.user_id = current_user.id @to_do.save @to_dos = ToDo.all end
無事にuser_idも入り、データが保存することができた。