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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

1回答

737閲覧

ruby on rails で、データベースのカラムの名前を変更したら、createとupdateができなくなりました。

isonodayodayo

総合スコア6

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2020/05/18 17:27

現在、某プログラミングのスクールで課題に取り組んでおり、ruby on railsで、modelを作ったのはいいものの、カラムの名前を間違えてしまいました。
気づいたのは、提出して評価をもらった段階で、間違えてつけたカラムの名前でコードを書いていました。
マイグレーションファイルで変更したので一安心したのですが、createとupdateができなくなってしましました。

間違えてtaskとつけてしまいましたが、contentが正しいようでしたので、このように直しました。

class ChangeColumnTitles < ActiveRecord::Migration[5.2] def change rename_column:tasks,:task,:content end end

そして、問題のcreateとupdateのコントローラーです。

def create @task=Task.new(task_params) if @task.save flash[:success] ='Taskが正常に追加されました' redirect_to @task else flash.now[:danger]='Taskが追加されませんでした' render :new end end
def update @task=Task.find(params[:id]) if @task.update(task_params) flash[:success] = 'Task は正常に更新されました' redirect_to @task else flash.now[:danger] = 'Task は更新されませんでした' render :edit end end

既にデータベースに入っていた物は、正確に表示されるのですが、新たにcreateしようとすると、インサートされるcontentがnullになってしまいました。

文章の引き渡しがうまくいってないと思い、updateも実行したところ、編集できませんでした。

そこで、コードの中のtask_paramsをcontent_paramsに変えてみたのですが、それはそれでエラーが出てしまいました、content_paramsに変更後のupdate実行時のエラー
create実行時も同じようなエラーが出ます。
そんなメソッド定義されてねえよって言われてますが、別に定義した覚えもありません。
この場合はmodelの作成からやり直すのが吉なのでしょうか

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

閲覧ありがとうございます。

本質問ですが、私の勘違いによる物でした。

まず、task_paramsについてですが、これは任意に定義したメソッドでした。

def task_params params.require(:task).permit(:task) end

これは、入力された文字列を無力化する物だと認識しております。
どうやら、これを介して文字列の受け渡しをしていたので、存在しないtaskという物を受け渡していたために、このようなことになったのだと認識しました。
したがってこの該当コードを、

def task_params params.require(:task).permit(:content) end

にすることによって、解決へ至りました。
本当に申し訳ありません。
ありがとうございました。

投稿2020/05/19 01:24

isonodayodayo

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問