前提・実現したいこと
Ruby(Rails)でゲーム好き向けのマッチングアプリを作成しています。
ユーザー情報編集機能で更新ボタンを押した際に、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
gem ancestryを用いて、よくプレイするゲームのプラットフォーム(PS4等)を選択後、子カテゴリのプルダウンを表示して選択(例えばMHWなど)するように改修を行なった後にエラーが発生するようになりました。
stack level too deep app/uploaders/image_uploader.rb:31:in `store_dir' app/controllers/users_controller.rb:30:in `update'
該当のソースコード
image_uploader.rb
ruby
1 def store_dir 2 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 3 end
user_controller.rb
ruby
1 def update 2 user = User.find(params[:id]) 3 if user.update(user_params) 4 flash[:notice] = "ユーザー情報が登録完了しました!" 5 redirect_to user_path(current_user.id) 6 else 7 flash[:error] = "入力に誤りがあります。もう一度入力してください。" 8 render :edit 9 end 10 end
試したこと
gem mini_magickをgem rmagickにしてbundleしてみましたが、変化はみられませんでした。
再帰エラーのようですが、エラー文で検索をかけて記事を探して実践してもエラー解消には至りませんでした。
また、def updateの中でbinding.pryを記述してparamsを確認しましたが、中身は問題なく受け取れていました。
補足情報(FW/ツールのバージョンなど)
ruby:2.5.1
rails:5.2.4.2
user_paramsの中身は下記のようになっています。
ruby
1 def user_params 2 params.require(:user).permit( 3 :nickname, 4 :image, 5 :email, 6 :age, 7 :sex, 8 :intro, 9 :voice, 10 game_ids: []) 11 end
userテーブルとgameテーブルは多対多で中間テーブル(playsテーブル)を作成し、アソシエーションを組んでいます。
user.rb
ruby
1class User < ApplicationRecord 2 <中略> 3 has_many :plays 4 has_many :games, through: :plays 5 <中略> 6end
game.rb
ruby
1class Game < ApplicationRecord 2 has_many :plays, dependent: :destroy 3 has_many :users, through: :plays 4 <中略> 5end
play.rb
ruby
1class Play < ApplicationRecord 2 belongs_to :game 3 belongs_to :user 4end
以上、ご助言頂けると幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。