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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

3812閲覧

Rails、CarrierWaveでの複数保存でDBにはデータは入るが、ディレクトリに保存されない

gosshu

総合スコア6

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/12/12 07:19

編集2017/12/12 07:48

初めまして。よろしくお願いします。

###前提・実現したいこと
画像を複数紐づけしたいです。

###発生している問題・エラーメッセージ
1対多でDBをネストしていて、DBには保存先等のデータは入っているのですが、肝心の画像データがpublic/uploads/../..に入ると思われますが、入らない状態です。

uploaderファイルのstore_dir の保存先を変えても反映されず、デフォルトのままにDBにリンクが入ることも気になります。

コンソールで子テーブルComapnyImageの格納データです。

pry(main)> CompanyImage.last.image CompanyImage Load (6.1ms) SELECT `company_images`.* FROM `company_images` ORDER BY `company_images`.`id` DESC LIMIT 1 => #<ImageUploader:0x007fb850ec0648 @file= #<CarrierWave::SanitizedFile:0x007fb851d9fec0 @content_type=nil, @file= "/home/vagrant/workspace/●●/public/uploads/company_image/image/44/20171212063946.jpg", @original_filename=nil>, @model= #<CompanyImage:0x007fb850ec0a30 id: 44, image: "20171212063946.jpg", company_id: 127, created_at: Tue, 12 Dec 2017 06:39:46 UTC +00:00, updated_at: Tue, 12 Dec 2017 06:39:46 UTC +00:00>, @mounted_as=:image, @storage= #<CarrierWave::Storage::File:0x007fb850ec05a8 @uploader=#<ImageUploader:0x007fb850ec0648 ...>>, @versions={}>

###該当のソースコード
親モデル:company.rb

ruby

1class Company < ActiveRecord::Base 2 has_many :company_images, dependent: :destroy 3 accepts_nested_attributes_for :company_images 4end

子モデル:company_image.rb

ruby

1class CompanyImage < ActiveRecord::Base 2 belongs_to :company 3 mount_uploader :image, ImageUploader 4end

image_uploader.rb

ruby

1class ImageUploader < CarrierWave::Uploader::Base 2 3 storage :file 4 5 def store_dir 6 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 7 # "public/uploads/picture_test" ←これにしてもここにならない。 8 end 9 10 def filename 11 time = Time.now 12 name = time.strftime('%Y%m%d%H%M%S') + '.jpg' 13 name.downcase 14 end 15 16end 17

画像を保存するところのView

html

1<%= form_for(@company) do |f| %> 2 <label for="image" class="col col-xs-12">画像</label> 3 <div class="col col-xs-12"> 4 <%= f.fields_for :images do |image| %> 5 <%= image.label :image %> 6   <%= image.file_field :image %> 7 <%end%> 8 </div> 9<% end %>

###試したこと
ネストせずにテーブル内のカラムでcarrierwaveを適応させたところ、問題なく画像は保存されました。

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

ruby 2.3 rails 4 carrierwave 1.2.1 mysql2 0.4.4

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

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

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

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

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

guest

回答1

0

自己解決

自己解決いたしました。

画像を登録する箇所で、
<%= f.fields_for :images do |image| %>
としていましたが、正しくは、
<%= f.fields_for :company_images do |image| %>
でした。

テーブル名を指定したいとだめですよね。失礼しました。

投稿2017/12/12 12:01

gosshu

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問