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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Q&A

解決済

1回答

1917閲覧

createアクションでrollback 親モデルitemと子モデルimageを同時に保存 どんなエラーを意味するのでしょうか?

a-shu-a

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/07/30 11:09

編集2020/07/30 11:19

現在、商品出品機能を実装しており、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

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

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

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

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

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

winterboum

2020/07/30 11:42 編集

items_controller でエラーしてるんだから、それ載せてくれなけりゃ ああ、file名の無いやつか。ごめん
guest

回答1

0

ベストアンサー

if @item.save を  if @item.save! にするとなんでsaveできないのか表示されます

投稿2020/07/30 11:43

winterboum

総合スコア23340

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

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

a-shu-a

2020/07/30 11:57

ありがとうございます! こんな方法でわかるなんて、 恥ずかしながら、どうやらバリデーションでひっかかっているみたなので、修正はじめます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問