Rails6から出てきたActionTextというかんたんにブログ投稿ができるようになる機能があるのですが、これらを使うときにエラーになってしまったので共有します。
まずやりたかったこととしては、ユーザーの情報とこのブログの情報を関連づけさせたかったのですが、それらをするときにエラーになってしまいました。
しかし以下のようなエラーが出ました。
Mysql2::Error: Field 'user_id' doesn't have a default value
というエラーが投稿ボタンを押して投稿しよようとしたときに出てきました。
どうしてかというとマイグレーションファイルにある記述に問題がありました。
今回結構参考になると思います。
まずActionTextとはなにか
ActionTextとは何かというとかんたんにブログなどの長文のコンテンツを書くことができるものです。
全然違いますがはてなブログさんのようにブラウザ上でブログを書くことができます。
詳しい使い方はググってください、今回は私がどうしてミスったのかそこだけを解説していきます
まずActionTextを使うとマイグレーションファイルが生成されます
・ ブログ投稿に関するマイグレーションファイル
・ActionTextに関するマイグレーションファイル
今回のActionTextには画像投稿ができるのできるようにするための
・Active Storageのマイグレーションファイル
以上の3つが生成されます。
そして今回何故ミスったかというと、ブログ投稿に関するマイグレーションファイルには
t.references :user, null: false, foreign_key: true
と記述してユーザーの情報を引っ張ってこようとしても何も問題はないのですが、ActionTextに関するマイグレーションファイルにその記述を書いてしまうとActionTextそのものにもユーザー情報が渡されないといけなくなってしまいます。
しかし今回投稿をする際にはブログ投稿の部分のカラムにはきちんと渡されるのですが、ActionTextの部分に関するテーブルにはユーザー情報行きません。
なので一番最初に出たようなエラーになってしまうわけです。
みなさんも是非気をつけてくだい。