現在、商品出品機能を実装しており、Itemモデルとそれに所属するImageモデルを同時に保存する形を目指しています。
しかし、createアクション時にとある箇所でrollbackがされているのですが、理由がわかりません。どなたか教えていただけませんでしょうか?
ruby
1<itemsテーブルのマイレーションファイル> 2class AddColumnItems < ActiveRecord::Migration[6.0] 3 def change 4 add_column :items, :name , :string, :null=>false 5 add_column :items, :price , :integer, :null=>false 6 add_column :items, :description, :text, :null=>false 7 add_column :items, :stock , :string, :null=>false 8 add_column :items, :condition_id , :integer, :null=>false 9 add_column :items, :shipping_cost_id , :integer, :null=>false 10 add_column :items, :shipping_time_id , :integer, :null=>false 11 add_column :items, :prefecture_id , :integer, :null=>false 12 add_reference :items, :category, foreign_key: true, :null=>false 13 add_reference :items, :brand, foreign_key: true 14 add_reference :items, :buyer, foregin_key: {to_table: :users} 15 add_reference :items, :seller, foregin_key: {to_table: :users}, :null=>false 16 end 17end
ruby
1<item.rb> 2class Item < ApplicationRecord 3 4 has_many :images, dependent: :destroy 5 accepts_nested_attributes_for :images, allow_destroy: true 6 belongs_to :category 7 belongs_to :brand 8 belongs_to :seller, class_name: "User" 9 belongs_to :buyer, class_name: "User" 10 11 with_options presence: true do |admin| 12 admin.validates :name 13 admin.validates :price 14 admin.validates :description 15 admin.validates :condition_id 16 admin.validates :shipping_cost_id 17 admin.validates :shipping_time_id 18 admin.validates :prefecture_id 19 admin.validates :seller_id 20 end 21 22 extend ActiveHash::Associations::ActiveRecordExtensions 23 belongs_to_active_hash :condition 24 belongs_to_active_hash :shipping_cost 25 belongs_to_active_hash :shipping_time 26 belongs_to_active_hash :prefecture 27 # delegate :name, to: :prefecture 28 29end 30
ruby
1 def new 2 if user_signed_in? 3 @item = Item.new 4 @item.images.new 5 else 6 redirect_to root_path 7 end 8 end 9 10 def create 11 @item = Item.new(item_params) 12 if @item.save 13 redirect_to root_path 14 else 15 render :new 16 end 17 end 18 19private 20def item_params 21 params.require(:item).permit(:name, :price, :description, :condition_id, :shipping_cost_id, :shipping_time_id, :prefecture_id, :category_id, :brand, :buyer_id, :seller_id, images_attributes: [:image, :id]).merge(seller_id: current_user.id) 22 end
ruby
1<image.rb> 2class Image < ApplicationRecord 3 mount_uploader :image, ImageUploader 4 belongs_to :item, optional: true 5 validates :image, presence: true 6end
items_controller でエラーしてるんだから、それ載せてくれなけりゃ
ああ、file名の無いやつか。ごめん
回答1件
あなたの回答
tips
プレビュー