画像を連続でアップロードすると上記のようなエラーが出ることがあるのですが、回避する方法はありますか?
users_controller.rb
class UsersController < ApplicationController def show @user = User.find(params[:id]) @post_images = @user.post_images.page(params[:page]).reverse_order end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) @user.update(user_params) redirect_to user_path(@user.id) end private def user_params params.require(:user).permit(:name, :profile_image) end end
user.rb
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :post_images, dependent: :destroy has_many :post_comments, dependent: :destroy has_many :favorites, dependent: :destroy attachment :profile_image end
Rails ってモデル内ででたエラーがコントローラーに表示されるのってわかりにくいですよね…
モデル内の update メソッドでローカルのファイルにロックをとって書き込もうとしてるんだと思いますがそのロックを開放し忘れてるんじゃないでしょうか
FullTrace というところを押して本当にエラーが出てる場所を調べるか、
モデルんコードを追記してくれれば分かる人がいるかもです
https://qiita.com/hideki0145/items/f2cb95516fdf8cc42609
こういう記事があったので /tmp はVM固有ではなくホストと共有されてたりしませんか?
docker しか使ったことがなく vagrant はよくわからないですが
普通は RAILS_ROOT だけ共有して OS /tmp とか /user とかはVM固有に持つものだと思ってますが
あなたの回答
tips
プレビュー