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

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

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

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

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

Active Record

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

Q&A

1回答

955閲覧

ActiveStorage Devisの独自カラムを追加するにはどうしたらいいでしょうか。

Tatsu0219

総合スコア2

Devise

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

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

Active Record

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

0グッド

0クリップ

投稿2021/10/07 06:23

編集2022/01/12 10:55

閲覧していただきありがとうございます。

表題についてになります。
Deviseに既に独自カラムを一つ設けており(Rankカラム)、そちらは問題なく動作しています。
ところが今回、ActiveStroageを使用し、Avatarカラムを作成しようとしたところ表示されない次第です。

user.rb

class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable include DeviseTokenAuth::Concerns::User has_one_attached :avatar //avatarカラムを追加 validates :name, presence: true def update_without_current_password(params, *options) params.delete(:current_password) if params[:password].blank? && params[:password_confirmation].black? params.delete(:password) params.delete(:password_confirmation) end result = update_attributes(params, *options) clean_up_passwords end

application_controller.rb

class ApplicationController < ActionController::Base include DeviseTokenAuth::Concerns::SetUserByToken protect_from_forgery with: :exception before_action :configure_permitted_parameters, if: :devise_controller? //カラムの追加を許可 skip_before_action :verify_authenticity_token helper_method :current_user, :user_signed_in? ... protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:account_update, keys: [:rank, :avatar]) end end

上記の設定でカラムの作成は行われるだろうと思っていたのですが、avatarカラムが出来上がることはなく、今に至ります。
schema.rbには、usersテーブルの他にactive_storage_attachmentsテーブル、active_storage_blobsテーブル、active_storage_variant_recordsテーブルが作成されているので、ActiveStorage自体をインストールし損ねていることはないと思います。

※こちらは関係ないと思いますが念のため、Deviseのregistrations_controller.rbになります。

class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController def update super if account_update_params[:avatar].present? resource.avatar.attach(account_update_params[:avatar]) end end private def sign_up_params params.permit(:email, :password, :password_confirmation, :name) end def account_update_params params.permit(:name, :email, :rank, :avatar) end end

Reactでフロントを作成し、updateした結果

Unpermitted parameters: :avatar, :registration Filter chain halted as :validate_account_update_params rendered or redirected Completed 422 Unprocessable Entity in 19ms (Views: 0.3ms | ActiveRecord: 0.5ms | Allocations: 1030)

stackoverflowで回答らしきものがあった(application_controller.rbにてconfigure_permitted_parametersのbefore_actionの開始順を早めるためにprepend_before_actionに変える。)のですが、そちらも上手くいきませんでした。

バージョン
Ruby. 2.7.4
Rails 6.1.4
Devise. 4.8.0

User.colunm_names結果

"id", "provider", "uid", "encrypted_password", "reset_password_token", "reset_password_sent_at", "allow_password_change", "remember_created_at", "confirmation_token", "confirmed_at", "confirmation_sent_at", "unconfirmed_email", "name", "nickname", "image", "email", "tokens", "created_at", "updated_at", "rank"

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

今のところ、carrierwaveで進めていこうと思います。
もし、ActiveStorageで実装できる方がいらっしゃれば、後学のためぜひ教えていただきたいです。

投稿2021/10/08 08:29

編集2021/10/29 05:52
Tatsu0219

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問