前提・実現したいこと
ユーザー登録時に、image(ユーザー画像)の初期値をデータベースに登録したい。
発生している問題・エラーメッセージ
railsのdeviseを使用しているので、deviseのコントローラーをカスタマイズし、imageの初期値を保存できるようにしようとしたのですが上手くいきません。
該当のソースコード
application_controller.rb
ruby
1class ApplicationController < ActionController::Base 2 before_action :configure_permitted_parameters, if: :devise_controller? 3 4 protected 5 6 def configure_permitted_parameters 7 devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :image]) 8 devise_parameter_sanitizer.permit(:account_update, keys: [:image]) 9 end 10 11end
registrations_controller.rb
ruby
1# frozen_string_literal: true 2 3class Users::RegistrationsController < Devise::RegistrationsController 4 # before_action :configure_sign_up_params, only: [:create] 5 # before_action :configure_account_update_params, only: [:update] 6 7 # GET /resource/sign_up 8 # def new 9 # super 10 # end 11 12 # POST /resource 13 def create 14 user = User.new(user_params) 15 user.save 16 redirect_to root_path 17 end 18 19 # GET /resource/edit 20 # def edit 21 # super 22 # end 23 24 # PUT /resource 25 # def update 26 # super 27 # end 28 29 # DELETE /resource 30 # def destroy 31 # super 32 # end 33 34 # GET /resource/cancel 35 # Forces the session data which is usually expired after sign 36 # in to be expired now. This is useful if the user wants to 37 # cancel oauth signing in/up in the middle of the process, 38 # removing all OAuth session data. 39 # def cancel 40 # super 41 # end 42 43 # protected 44 45 # If you have extra params to permit, append them to the sanitizer. 46 # def configure_sign_up_params 47 # devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute]) 48 # end 49 50 # If you have extra params to permit, append them to the sanitizer. 51 # def configure_account_update_params 52 # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute]) 53 # end 54 55 # The path used after sign up. 56 # def after_sign_up_path_for(resource) 57 # super(resource) 58 # end 59 60 # The path used after sign up for inactive accounts. 61 # def after_inactive_sign_up_path_for(resource) 62 # super(resource) 63 # end 64 65 private 66 def user_params 67 params.require(:user).permit(:name, :email, :password).merge(image: "sample.jpg") 68 end 69end 70
試したこと
ストロングパラメーターにmergeメソッドでimageを追加して、binding.pryで確認をしたところimageに値が入っているのに、何故か上のエラー画面になりデータベースに保存することができません。
他にも、マイグレーションファイルのimageカラムにdefault "sample.jpg"等を追加したりもしましたが、その方法だとデータベースに保存はできるのですが、表示ができなかったのでやめました。
どなたか解決策をお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。