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

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

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

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

Q&A

解決済

1回答

2426閲覧

Railsにおいて画像がDBに保存されない

syclimb

総合スコア13

Ruby on Rails 5

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

0グッド

0クリップ

投稿2018/10/26 12:39

前提・実現したいこと

Webサービスにおいて、ユーザーが投稿した画像名をDBに保存したいです。
(ファイル名でなくても投稿した画像とユーザーがひもづけば良いです)
WebサービスはECのようなもので、ユーザーに画像と購入者情報を入力してもらいます。

画面の遷移は
1.画像の選択
2.購入者情報の入力
3.画像・入力情報の確認
4.注文完了(3→4のタイミングでDBに保存)
となっています。

またcarrierwaveをインストールしています。
→おそらくこれが原因では?と思っているのですが、理解が浅く、ご教授いただけると幸いです。

発生している問題・エラーメッセージ

1.ユーザーが画像を投稿する(input type="file" name="image")
2.投稿した画像名(画像のパス?)をsession[:image]で保持
3.<%= image_tag(session[:image]) %>で画像を表示
3→4.@order.image = session[:image]として@order.saveで保存

としています。
このときimage以外の入力内容は正しくDBに保存されているのですが、imageだけnilになってしまいます。なおこのときsession[:image]には値が入っています。

試したこと

binding.pryを用いてsession[:image]や@order.imageにどういう値が入っているかを確認しました。
確認したところsession[:image]には画像名(パス)が入っていましたが、@order.imageは以下のようになっていました。

pry(#OrderController)> @order.image => #<ImageUploader:0x0000000c492648 @cache_id=nil, @file=nil, @filename=nil, @model= #<Order:0x0000000c5c0790 id: nil, name1: "", string: nil, name2: "", tel1: "", tel2: "", tel3: "", image: nil, text: nil, email: "", zipcode: "", pref: "北海道", addr1: "", addr2: "", delivery_date: "", date: nil, pay_type: "credit_card", pay_code: nil, created_at: nil, updated_at: nil>, @mounted_as=:image, @versions=nil>

情報が足りていないなどあれば言ってください。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

imageカラムの他にimage_urlカラムを用意して、そこにsession[:image]の値を入れることでDBに画像のファイルパスが保存できるようになりました。
imageカラムはcarrierwaveを動かすための犠牲カラム?として用いています。

投稿2018/11/08 09:14

syclimb

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問