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

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

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

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

Ruby

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

0回答

1576閲覧

Rails deviseとActiveStorageを使用したユーザーのアバター登録!!のお悩み…

EleAco

総合スコア15

Devise

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

Ruby

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2020/10/31 03:27

編集2020/11/02 01:36

#開発環境
ruby 2.6.5
Rails 6.0.3.4
devise
ActiveStorage

##困っている事
ユーザー周りをdeviseを使用して実装中
新規登録では、パスワードとEmailとnicknameで登録が完了するようにし
プロフィール編集でアバターと自己紹介文を登録できるようにしたいのですが
両方とも保存がうまくできず困っています…

##記述内容
アプリケーションコントローラーからみていきます


**app>controllers>application_controller.rb** def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname]) devise_parameter_sanitizer.permit(:account_update, keys:[:profile, :avatar]) end

deviseのregistrationsのedit.html.erbにuserモデルに自己紹介文とアバターを保存するように記述してます

**app>views>devise>registrations>edit.html.erb** <%= form_with model: @user, url: user_registration_path, local: true do |f| %> <%= render "devise/shared/error_messages", resource: resource %> <div class="edit-wrapper"> <div id="avatar-list"> </div> <p class="edit-avatar-text"> クリックして写真をアップロード </p> <div class="edit-avatar-upload"> <%= f.file_field :avatar, class: 'edit-avatar'%> </div> <div class="edit-profile-container"> <%= f.text_area :profile, class: 'edit-profile'%> </div> <div class='post-new-btn'> <%= f.submit "変更する" ,class: 'post-new'%> </div> </div> <% end %>

deviseのコントローラーが使用できるよようルーティングも記述しております

**routes.rb** devise_for :users, controllers: { registrations: 'users/registrations', sessions: 'users/sessions' }

deviseのmigrateファイルにprofileが保存されるようにカラムを追加

**devise_create_user.rb** create_table :users do |t| ## Database authenticatable t.string :nickname, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" t.text :profile

avatarがActiveStorageに保存されるようにuserモデルにアソシエーションを記述

**models>user.rb** class User < ApplicationRecord has_one_attached :avatar

refistations_controllerにアクションを追加

# GET /resource/edit def edit @page_name = "プロフィール編集画面" super end # PUT /resource def update if account_update_params[:avatar].present? @user.avatar.attach(account_update_params[:avatar]) end super end

binding.pryでどこで不具合が出ているか確認

24: def update 25: if account_update_params[:avatar].present? 26: @user.avatar.attach(account_update_params[:avatar]) 27: end => 28: binding.pry 29: super 30: end [1] pry(#<Users::RegistrationsController>)> account_update_params[:avatar].present? => true [2] pry(#<Users::RegistrationsController>)> @user.avatar.attach(account_update_params[:avatar]) => false

このような流れです
#####自己紹介文(profile)、アバター(avatar)両方保存できていない状況です…

##自分の仮説としては
ActiveStorageにすでに写真を保存するためのimageカラムがあるためアバターを保存することができないのかな?とか考えています!でもprofileも保存できていないし…謎だらけです

#####皆様のお力をお貸しください!よろしくお願いいたします

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問