質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

141閲覧

railsでデータのアップデートができない

itoshinn

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2024/11/05 05:04

実現したいこと

railsでデータをupdateしたい

発生している問題・分からないこと

日記のアプリを作成しているが日記に書いた内容を編集するとエラーが発生する
Diary.new diary_paramsではエラーなくデータを作成できたのにupdateすると
diary_paramsで指定していないどこからきたかわからないdiariesというカラムがないというエラーが出てくる

ruby

1def update 2 @diary = Diary.where( user_id: session[:user_id] , date: Date.today).first 3 4 if @diary.update(diary_params) 5 redirect_to '/diaries/index', status: :unprocessable_entity 6 else 7 render 'edit', status: :unprocessable_entity 8 end 9 end 10 11 private 12 def diary_params 13 params.require(:diary).permit(:user_id, :title, :content, :date) 14 end

エラーメッセージ

error

1ActiveRecord::StatementInvalid in DiariesController#update 2SQLite3::SQLException: no such column: diaries.

該当のソースコード

rails

1特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Chatgptで聞いたが解消できずネットには同じエラーを探せなかった

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2024/11/05 06:11

> エラーメッセージ これはwhereとupdateのどちらで発生していますか?
itoshinn

2024/11/05 06:23

updateです!whereではデータ取れています。 まじで助けてほしいです・・
maisumakun

2024/11/05 06:24

・モデルにはどんなコードを書いていますでしょうか? ・エラーのスタックトレース(エラー箇所をどこから呼び出したかのリスト)は取れますか?
itoshinn

2024/11/05 06:38

モデルの内容です class Diary < ApplicationRecord belongs_to :user, foreign_key: 'user_id' validates :title, presence: { message: 'タイトルは必須です。'} validates :content, presence: { message: '日記の内容を入力してください'} end エラーのスタックトレースとは ActiveRecord::StatementInvalid in DiariesController#update SQLite3::SQLException: no such column: diaries. のことですか? 一応エラーが起きているのは if @diary.update(diary_params)の部分でelseのコードすら読み取れてないです UPDATE "diaries" SET "content" = ?, "updated_at" = ? WHERE "diaries"."" IS NULL [["content", "aaa"], ["updated_at", "2024-11-05 06:07:46.657064"]] このようなエラーが生成されています
maisumakun

2024/11/05 06:42

> エラーのスタックトレースとは エラーの出た画面に、「どのファイルの何行目」のような情報が羅列になっていませんか?(それのことです)
maisumakun

2024/11/05 06:44

あと、ApplicationRecordに特殊な仕掛けをしていたりはないでしょうか。
itoshinn

2024/11/05 09:12

ApplicatioRecordには何も記述していないです コンソールに表示されていたのは以下のものです。 ちなみにアップデートの時に何も変更なしに送信すると何も起きません TRANSACTION (0.0ms) begin transaction ↳ app/controllers/diaries_controller.rb:37:in `update' Diary Update (1.5ms) UPDATE "diaries" SET "content" = ?, "updated_at" = ? WHERE "diaries"."" IS NULL [["content", "aaa"], ["updated_at", "2024-11-05 06:07:46.657064"]] ↳ app/controllers/diaries_controller.rb:37:in `update' TRANSACTION (0.1ms) rollback transaction ↳ app/controllers/diaries_controller.rb:37:in `update' Completed 500 Internal Server Error in 7ms (ActiveRecord: 1.7ms | Allocations: 4435) ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: diaries.):
maisumakun

2024/11/05 09:51

ログファイル、あるいは画面側から情報は得られませんか?
itoshinn

2024/11/05 11:48

railsのアプリケーションのログファイルはこのようになっていましたが これじゃなかったらわからないです... Started GET "/diaries/edit" for ::1 at 2024-11-05 15:07:43 +0900 Processing by DiariesController#edit as HTML Diary Load (0.1ms) SELECT "diaries".* FROM "diaries" WHERE "diaries"."user_id" = ? AND "diaries"."date" = ? LIMIT ? [["user_id", "itsn2"], ["date", "2024-11-05"], ["LIMIT", 1]] ↳ app/controllers/diaries_controller.rb:28:in `edit' Rendering layout layouts/diary.html.erb Rendering diaries/edit.html.erb within layouts/diary Rendered diaries/edit.html.erb within layouts/diary (Duration: 0.8ms | Allocations: 446) Rendered layout layouts/diary.html.erb (Duration: 3.1ms | Allocations: 1581) Completed 200 OK in 6ms (Views: 3.7ms | ActiveRecord: 0.1ms | Allocations: 2743) Started PATCH "/diaries/edit" for ::1 at 2024-11-05 15:07:46 +0900 Processing by DiariesController#update as TURBO_STREAM Parameters: {"authenticity_token"=>"[FILTERED]", "diary"=>{"user_id"=>"itsn2", "date"=>"2024-11-05", "title"=>"a", "content"=>"aaa"}, "commit"=>"記録する"} Diary Load (0.1ms) SELECT "diaries".* FROM "diaries" WHERE "diaries"."user_id" = ? AND "diaries"."date" = ? LIMIT ? [["user_id", "itsn2"], ["date", "2024-11-05"], ["LIMIT", 1]] ↳ app/controllers/diaries_controller.rb:32:in `update' TRANSACTION (0.0ms) begin transaction ↳ app/controllers/diaries_controller.rb:37:in `update' Diary Update (1.5ms) UPDATE "diaries" SET "content" = ?, "updated_at" = ? WHERE "diaries"."" IS NULL [["content", "aaa"], ["updated_at", "2024-11-05 06:07:46.657064"]] ↳ app/controllers/diaries_controller.rb:37:in `update' TRANSACTION (0.1ms) rollback transaction ↳ app/controllers/diaries_controller.rb:37:in `update' Completed 500 Internal Server Error in 7ms (ActiveRecord: 1.7ms | Allocations: 4435) ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: diaries.):
maisumakun

2024/11/05 13:10

> ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: diaries.): この行以降にスタックトレースがありませんか?
itoshinn

2024/11/07 11:33

返信遅れて申し訳ありません ActiveRecord::StatementInvalid in DiariesController#update SQLite3::SQLException: no such column: diaries. Rails.root: /Users/itoshinn/Desktop/personalApps/Diary-Notebook- Application Trace | Framework Trace | Full Trace Request Parameters: {"_method"=>"patch", "authenticity_token"=>"[FILTERED]", "diary"=>{"user_id"=>"itsn", "date"=>"2024-11-07", "title"=>"こんにちは", "content"=>"ハロー!"}, "commit"=>"記録する"} これ以降はありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問