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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Q&A

解決済

1回答

1525閲覧

Rails MySQL ダウンロードした画像を直接DBに格納したい

satoshi_n61

総合スコア10

Ruby on Rails 5

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/06/11 09:50

前提・実現したいこと

railsでECサイトを作っています。
MySQLのDBにサイトからダウンロードした画像ファイルを直接格納したいのですが、うまくいかないので、ご教授お願い致します。
製品のテーブルに対して、画像のテーブルが1対多の関係になるようにアソシエーションを組んでいます。
画像のサイズは112KBでjpg形式です。

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

エラーメッセージは特にありませんが、画像ファイルが文字列としてしか格納されていないされていない状態です。

イメージ説明
イメージ説明

該当のソースコード

ターミナル

INSERT INTO `images` ( `id`, `image`, `created_at`, `updated_at`, `product_id` ) VALUES ( '1', 'publicdomainq-0043630wap.jpg', '2020/01/01', '2020/01/01', '1' );

product.rb

class Product < ApplicationRecord has_many :order_details has_many :orders, through: :order_details has_many :categories, through: :product_categories has_many :product_categories has_many :images end

image.rb

class Image < ApplicationRecord belongs_to :product end

20200604074505_create_images.rb

class CreateImages < ActiveRecord::Migration[5.2] def change create_table :images do |t| t.mediumblob :image, null: false t.references :product, foreign_key: true t.timestamps end end end

20200602075011_create_products.rb

class CreateProducts < ActiveRecord::Migration[5.2] def change create_table :products do |t| t.string :name, null: false t.date :day, null: false t.text :explan, null:false t.integer :price, null: false t.text :voice, null: false end end end

試したこと

imageカラムの型をbinaryに変更してみました。
画像ファイルを入れるディレクトリをpublic直下に変更してみました。
↓こちらのサイトを参考に画像を格納しました。
https://baccholog.com/archives/856

補足情報(FW/ツールのバージョンなど)

mysql Ver 14.14
Rails 5.2.4.3

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

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

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

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

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

guest

回答1

0

自己解決

画像ファイルはこの状態で格納できているようでした。表示方法とDB設計に誤りがあり、productテーブルとimageテーブルを分けて、1対多の関係でアソシエーションを組んでいたのですが、表示方法が難しくなるため、複数の画像をもたせるのは諦め、productテーブルにimageカラムをつくり、imageテーブルは削除しました。
その上で、= image_tag @products.imageとして表示できました。

投稿2020/06/12 10:01

satoshi_n61

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問