初めまして。よろしくお願いします。
###前提・実現したいこと
画像を複数紐づけしたいです。
###発生している問題・エラーメッセージ
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。