6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ActiveRecord::RecordInvalid: (バリデーションに失敗しました: Userを入力してください)エラーの解決例

Last updated at Posted at 2021-02-03

現在、顧客管理アプリを作成しており、顧客を登録した時に、

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を使ってエラーの本質を見つけてくださいとのことでした。参考になる記事をいただけて、問題解決もできたので、メンターさんに感謝です!同じエラーで苦しんでいる人の参考になれば幸いです。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?