現在、顧客管理アプリを作成しており、顧客を登録した時に、
ActiveRecord::RecordInvalid: バリデーションに失敗しました: Userを入力してください
というエラーが出て、顧客情報が登録できませんでした。
binding.pryを入れてcreateアクションを検証してみました。
エラーが出た時は、createアクションに、
Client.create!(name: client_params[:name], gender: client_params[:gender], age: client_params[:age], address: client_params[:address])
入力していました。
Client.create(client_params)
で検証してみると、
Client.create(client_params)
=> #<Client:0x00007fcec135ebd8 id: nil, name: "浅井健介", gender: "男", age: 36, address: "東京都港区456-789", user_id: nil, created_at: nil, updated_at: nil>
と返ってきました。
おや?どうやら user_id
, created_at
, updated_at
の情報が入っていない?
という事で、deviseのヘルパーメソッド current_user
を使い、コードを書き換えた所、
client = current_user.clients.create!(client_params)
TRANSACTION (1.5ms) BEGIN
↳ (pry):4:in `create'
Client Create (54.8ms) INSERT INTO "clients" ("name", "gender", "age", "address", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["name", "浅井健介"], ["gender", "男"], ["age", 36], ["address", "東京都港区456-789"], ["user_id", 1], ["created_at", "2021-02-03 14:08:05.191944"], ["updated_at", "2021-02-03 14:08:05.191944"]]
と、User情報入り、問題解決が出来ました。
まとめ
メンターさんにアドバイスを求めた所、binding.pryを使ってエラーの本質を見つけてくださいとのことでした。参考になる記事をいただけて、問題解決もできたので、メンターさんに感謝です!同じエラーで苦しんでいる人の参考になれば幸いです。