#実現したいこと
・sorceryで作成したユーザー機能をカスタマイズする
・emailカラムを削除しnameカラムを追加する
#実現のためしたこと
・テーブル、モデルを一から作り直した。
・ログイン設定を修正した
・そのほかのコードの修正
#テーブル・モデルの作り直し(ターミナルで)
1.モデルの削除
$ rails destroy model モデル名
2.マイグレーションファイルの作成
$ rails g migration ファイル名(任意)
3.マイグレーションファイルに追記
def change
drop_table :削除するテーブル名
end
$ rake db:migrate
4.再インストール
$rails g sorcery:install
$rake db:migrate
$rails g scaffold user name:string crypted_password:string salt:string --migration false
#ログイン設定の修正
# --- user config ---
config.user_config do |user|
# -- core --
# specify username attributes, for example: [:username, :email].
# Default: `[:email]`
#
user.username_attribute_names = [:name] ←ここを追記
デフォルトの状態ではログインの際にemailが求められるようになっている。だから、emailからnameに書き換えてやる。
また、「ログインの際にメールアドレスでも名前でもよい」とするときは下記のように複数指定してやれば良い。
user.username_attribute_names = [:email, :name]
#そのほかのコードの修正
def user_params
params.require(:user).permit(:name, :password, :password_confirmation)
end
class User < ApplicationRecord
authenticates_with_sorcery!
validates :password, length: { minimum: 3 }, if: -> { new_record? || changes[:crypted_password] }
validates :password, confirmation: true, if: -> { new_record? || changes[:crypted_password] }
validates :password_confirmation, presence: true, if: -> { new_record? || changes[:crypted_password] }
validates :name, uniqueness: true
end
その他、フォームなどのHTMLファイルの修正をする必要がある。
#参考
https://github.com/Sorcery/sorcery/wiki/Simple-Password-Authentication
http://hyperneetprogrammer.hatenablog.com/entry/login-with-sorcery-by-username-or-email
https://dev.classmethod.jp/server-side/ruby-on-rails/ruby-on-rails_sorcery_auth_no2/
https://qiita.com/Kuragasaki/items/7d98cf29341611fb189a
#最後に
テーブルとモデルの削除・作り直しに関しては、もっといい方法があるのかもしれないです。