見出し画像

[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です!
とんでもなく簡単だった……

この記事が気に入ったらサポートをしてみませんか?