前提・実現したいこと
Railsを始めて5日目の初心者です。
deviseを使ってユーザー登録必須のシステムを作っています。
下記3つを実装後、ユーザー情報の更新時にif文を追加するとエラーメッセージが発生しました。
1.ユーザー情報の更新にパスワード入力をしなくてもよいようにする。
https://kossy-web-engineer.hatenablog.com/entry/2018/11/06/102047
2.deviseで作成したUserモデルにnameカラムを追加し名前を登録できるようにする。
https://qiita.com/hz1_d/items/77e440b09a1ddbe56263
3.companyモデルを作成する。
発生している問題・エラーメッセージ
NoMethodError in RegistrationsController#update undefined method `user_url' for #<RegistrationsController:0x00007ffc986c65c8> Did you mean? user_unlock_url
該当のソースコード
routes.rb
ruby
1Rails.application.routes.draw do 2 3 resources :companies 4 root 'home#top' 5 6 get 'home/top' 7 8 devise_for :users, 9 controllers: { registrations: 'registrations' } 10 11end
registrations_controller.rb
ruby
1class RegistrationsController < Devise::RegistrationsController 2 3 protected 4 def update_resource(resource, params) 5 resource.update_without_current_password(params) 6 if @user.present? 7 end 8 end 9 10end
user.rb
ruby
1class User < ApplicationRecord 2 3 devise :database_authenticatable, :registerable, 4 :recoverable, :rememberable, :validatable, 5 :confirmable, :lockable, :timeoutable, :trackable 6 7 def update_without_current_password(params, *options) 8 params.delete(:current_password) 9 10 if params[:password].blank? && params[:password_confirmation].blank? 11 params.delete(:password) 12 params.delete(:password_confirmation) 13 end 14 15 result = update_attributes(params, *options) 16 clean_up_passwords 17 result 18 end 19 20end
application_controller.rb
ruby
1class ApplicationController < ActionController::Base 2 3 before_action :authenticate_user! 4 5 protect_from_forgery with: :exception 6 before_action :configure_permitted_parameters, if: :devise_controller? 7 8 protected 9 10 def configure_permitted_parameters 11 added_attrs = [ :email, :name, :company_id, :password, :password_confirmation ] 12 devise_parameter_sanitizer.permit :account_update, keys: added_attrs 13 end 14 15end
rails routes
ruby
1Prefix Verb URI Pattern Controller#Action 2 companies GET /companies(.:format) companies#index 3 POST /companies(.:format) companies#create 4 new_company GET /companies/new(.:format) companies#new 5 edit_company GET /companies/:id/edit(.:format) companies#edit 6 company GET /companies/:id(.:format) companies#show 7 PATCH /companies/:id(.:format) companies#update 8 PUT /companies/:id(.:format) companies#update 9 DELETE /companies/:id(.:format) companies#destroy 10 root GET / home#top 11 home_top GET /home/top(.:format) home#top 12 new_user_session GET /users/sign_in(.:format) devise/sessions#new 13 user_session POST /users/sign_in(.:format) devise/sessions#create 14 destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 15 new_user_password GET /users/password/new(.:format) devise/passwords#new 16 edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 17 user_password PATCH /users/password(.:format) devise/passwords#update 18 PUT /users/password(.:format) devise/passwords#update 19 POST /users/password(.:format) devise/passwords#create 20 cancel_user_registration GET /users/cancel(.:format) registrations#cancel 21 new_user_registration GET /users/sign_up(.:format) registrations#new 22 edit_user_registration GET /users/edit(.:format) registrations#edit 23 user_registration PATCH /users(.:format) registrations#update 24 PUT /users(.:format) registrations#update 25 DELETE /users(.:format) registrations#destroy 26 POST /users(.:format) registrations#create 27 new_user_confirmation GET /users/confirmation/new(.:format) devise/confirmations#new 28 user_confirmation GET /users/confirmation(.:format) devise/confirmations#show 29 POST /users/confirmation(.:format) devise/confirmations#create 30 new_user_unlock GET /users/unlock/new(.:format) devise/unlocks#new 31 user_unlock GET /users/unlock(.:format) devise/unlocks#show 32 POST /users/unlock(.:format) devise/unlocks#create 33 rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show 34rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show 35 rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show 36update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update 37 rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
試したこと
if文を削除してcompanyにレコードを追加してみたところエラーは発生しませんでした。
ruby
1 @company = Company.new 2 @company.save
補足情報(FW/ツールのバージョンなど)
ruby 2.6.1p33
rails 5.2.2
devise 4.6.1
噛み砕いた内容でご回答をいただけたら大変助かります。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/24 15:49