morooka ryosuke  2021/04/10更新

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も入り、データが保存することができた。

タイトルとURLをコピーしました