Rails 5.2.1とMySQL 5.7.23でdate_fieldを使ったフォームを作成しているのですが、テストで登録してみると"Field 'date' doesn't have a default value"というエラーが出てしまいます。
色々調べてみたところ、MySQL 5.6以上ではデフォルト値が設定されていないカラムにnullを挿入しようとするとこのエラーが出ることが分かりましたが、私の場合は日付を選択した上で登録をしようとしているので、dateはnullじゃないはずなのにこのエラーが出てしまっています。
↓new.erb
<%= form_for @post, :url => {:action => :create} do |f| %> <table> <tr> <th>DATE</th> <th>CONTENT</th> </tr> <tr> <td><%= f.date_field :date %></td> <td><%= f.text_field :content %></td> </tr> </table> <%= f.submit %> <% end %>
↓posts_controller.rb
class PostsController < ApplicationController def new @post = Post.new end def create @post = Post.new(user_id: current_user.id, date: params[:date], content: params[:content]) @post.save redirect_to('/') end end
↓MySQL設定
CREATE TABLE `posts` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `date` date NOT NULL, `content` varchar(255) DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
どうしたら直るでしょうか?
皆様のお知恵をお借りできますと幸いです。よろしくお願い致します。