![見出し画像](https://assets.st-note.com/production/uploads/images/58283467/rectangle_large_type_2_0f69cca4509ccc1902cf7c5dee941fb0.jpeg?width=1200)
Photo by
subarasikiai
[Rails]sorceryを使用し、メールアドレスなしで認証機能を実装したい
プライベートでアプリを作っているとき、表題の件がわからなかったので先輩に聞きました。
ユーザー名とパスワードで認証させたかったので「え、メールアドレス要らないんだけど」って思ったんですよね。
疑問点
- `rails g sorcery:install` をしたときにデフォルトでemailカラムが入っているけど、無くしても問題ないの??
回答と解決方法
回答:デフォルトで"email"が設定されているだけなので、`config/initializers/sorcery.rb`を書き換えれば大丈夫!
解決方法:上記のファイル内でデフォルト値を変えちゃえば問題なし!ということで、以下の箇所を見つけて
config.user_config do |user|
# -- core --
# Specify username attributes, for example: [:username, :email].
# Default: `[:email]`
#
# user.username_attribute_names =
user.username_attribute_names = のコメントアウトを消して、変更したいカラムを書く
config.user_config do |user|
# -- core --
# Specify username attributes, for example: [:username, :email].
# Default: `[:email]`
#
user.username_attribute_names = [:user_name」
これで書き換えOK!私の場合、修正前にすでに`rails g sorcery:install`を実行してしまったので、マイグレーションファイルも修正して完成。
class SorceryCore < ActiveRecord::Migration[6.1]
def change
create_table :users do |t|
t.string :user_name, null: false
t.string :nickname
t.integer :role, default: 0, null: false
t.string :crypted_password
t.string :salt
t.timestamps null: false
end
add_index :users, :user_name, unique: true
end
end
マイグレーションかけたらOKです!
とんでもなく簡単だった……
この記事が気に入ったらサポートをしてみませんか?