質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

357閲覧

ユーザーのプロフィール情報を更新したい

gannbaritai

総合スコア2

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/12/24 05:47

#解決したいこと
すでに存在しているユーザーのプロフィール情報を更新したい。

前提

ユーザーの登録にはdeviseをつかっています。
Ruby on Railsはバージョン6.0.0
データベースはMySQL

エラー文の内容

ローカルサーバーではエラーは出ていないのですが、更新がうまくいっていない状態です。

ターミナル

Started PATCH "/users/1" for ::1 at 2020-12-24 14:34:43 +0900 Processing by UsersController#update as HTML Parameters: {"authenticity_token"=>"TpUEG0NFoYeu4qsqHdhJ0ALkSWMGA5g1qENU2RB9lQEo4PqBEi4Hqwk5QJsxSj0gXZArsccdmCvhuNjrXNrqlA==", "user"=>{"nickname"=>"test", "description"=>"こんにちは", "avatar"=>#<ActionDispatch::Http::UploadedFile:0x00007f988f299aa8 @tempfile=#<Tempfile:/var/folders/5f/f5dbg2xd1x59jr7h0wrgvs9w0000gn/T/RackMultipart20201224-4854-1xhusl5.jpg>, @original_filename="1.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"1.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"更新する", "id"=>"1"} User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1 ↳ app/controllers/users_controller.rb:12:in `update' DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the :email attribute in User model, pass `case_sensitive: true` option explicitly to the uniqueness validator. (called from update at /Users/etsuya/projects/fact-m-31640/app/controllers/users_controller.rb:13) (0.1ms) BEGIN ↳ app/controllers/users_controller.rb:13:in `update' User Exists? (0.2ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'test@test' AND `users`.`id` != 1 LIMIT 1 ↳ app/controllers/users_controller.rb:13:in `update' (0.1ms) ROLLBACK ↳ app/controllers/users_controller.rb:13:in `update' Rendering users/edit.html.erb within layouts/application Rendered users/edit.html.erb within layouts/application (Duration: 0.7ms | Allocations: 437) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 29ms (Views: 20.6ms | ActiveRecord: 0.9ms | Allocations: 19754)

form.html.erb

Ruby

1<%= form_with model: @post, local: true do |form| %> 2 <div class="content-title"> 3 <%= form.text_field :title, class:"form_title", placeholder:"タイトル" %> 4 </div> 5 <div class="content-tag"> 6 <p>tagが入ります</p> 7 </div> 8 <div class="content-text"> 9 <%= form.text_area :text, class:"form_text", placeholder:"音楽の知識や技術を共有しよう" %> 10 </div> 11 <div class="content-submit"> 12 <div class="right-content"> 13 <%= form.submit "投稿する", class:"form_submit"%> 14 </div> 15 </div> 16<% end %>

users.controllers.rb

class UsersController < ApplicationController def show @nickname = current_user.nickname @posts = current_user.posts end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update(user_params) && @user.avatar.attach(params[:avatar]) redirect_to user_path(@user) else render :edit end end private def user_params params.require(:user).permit(:nickname, :description, :avatar) end end

application_controller

class ApplicationController < ActionController::Base before_action :authenticate_user!, except: [:index, :show] before_action :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar, :description]) devise_parameter_sanitizer.permit(:account_update, keys: [ :avatar, :nickname, :description]) end end

## 試してみたこと
パラメーターの受け渡しに問題があるのかと思い今一度deviseにおけるストロングパラメーターについてしらべてみたのですがよくわからず
updateがなぜできないのかかいけつできませんでした。
なぜupdateアクションでロールバックされているのか、原因と解決方ご存知の方はお力をお借りしたいです。
初学者なのでわかりやすくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/12/25 08:14

models/user.rb の初めの方を載せてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問