3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sorceryで作るユーザー機能をカスタマイズ

Last updated at Posted at 2018-10-12

#実現したいこと
・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

#ログイン設定の修正

/config/initializers/sorcery.rb
  # --- 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]

#そのほかのコードの修正

app/controllers/users_controller.rb
  def user_params
      params.require(:user).permit(:name, :password, :password_confirmation)
    end
app/models/user.rb
 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

#最後に
テーブルとモデルの削除・作り直しに関しては、もっといい方法があるのかもしれないです。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?