前提・実現したいこと
Rails フリマアプリのクローンを制作しています。
商品の出品機能(画像付き)は、出来たのですが
editページから商品情報の編集の際に
更新すると、以下のエラーとなります。
発生している問題・エラーメッセージ
ActiveRecord::NotNullViolation in ItemsController#update
Mysql2::Error: Field 'image' doesn't have a default value: INSERT INTO images
(item_id
, created_at
, updated_at
) VALUES (5, '2020-05-15 00:38:19', '2020-05-15 00:38:19')
該当のソースコード
該当のエラーコード app < controllers < ApplicationController
ruby
1 2def update 3 @item = Item.find(params[:id]) # ①インスタンス変数にセット 4 @item.update(item_params) # ②updateメソッドの実行 5 if @item.update(item_params) 6 redirect_to @item 7 else 8 9
ストロングパラメーター
ruby
1 2 private 3 def item_params 4 params.require(:item).permit(:name, :introduction, :condition, :area_id, :size, :price, :preparation_day, :postage, images_attributes: [:image]) 5 end 6end
マイグレーションファイル
ruby
1 2class CreateItems < ActiveRecord::Migration[5.2] 3 def change 4 create_table :items do |t| 5 t.string :name, null: false 6 t.text :introduction, null: false 7 # t.references :category, null: false, foreign_key: true 8 # t.references :brand, foreign_key: true 9 t.string :condition, null: false 10 t.integer :area_id, null: false 11 t.string :size 12 t.integer :price, null: false 13 t.integer :preparation_day, null: false 14 t.integer :postage, null: false 15 # t.references :seller, null: false, foreign_key: true 16 # t.references :buyer, foreign_key: true 17 t.timestamps 18 end 19 end 20end 21
試したこと
画像データが取得出来ていないと思い---
private以下
item_params内の、imageを image_id に変えてみましたが、ダメでした
補足情報(FW/ツールのバージョンなど)
ruby 2.5.1
gem 'rails', '~> 5.2.3'
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー