分からないこと
UserのmodelファイルにパスワードをBCryptを用いて暗号化し、パスワードに代入するメソッドを記述しました。
その後seedファイルを作成し、投入しましたが暗号化後のパスワードを取得しようとしてもうまくいきません。
というよりかは取得はできるのですが、どうしてこのような記述で取得できるのかがわかりません。どなたかご教授お願いいたします。
Userのpasswordに関するカラム名は
hashed_password
と記述しております。
user.rb
ruby
1class User < ApplicationRecord 2 def password=(raw_password) 3 if raw_password.kind_of?(String) 4 self.hashed_password = BCrypt::Password.create(raw_password) 5 elsif raw_password.nil? 6 self.hashed_password = nil 7 end 8 end 9end
seed.rb
ruby
1User.create!( 2 password: "hogehoge" 3)
とし、db:seedを投入後、ターミナルで
rails r "puts User.first.hashed_password"
とすると暗号化されたパスワードが出力されます。
このとき、seed.rbのパスワードはなぜhashed_passwordではなくpasswordと記述しなければならないのでしょうか。
最初はseed.rbに
hashed_password: "hogehoge"
と記述していました。これだとターミナルに出力されるのは暗号化される前のhogehogeになってしまいます。
テーブル作成の際にパスワードに関してのカラムはhashed_passwordにしたのだからseed.rbに関しても同じhashed_passwordにしなければならないと思っていたのですが、どこがおかしいのでしょうか。
どなたか教えていただければ嬉しいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/28 10:41
2020/09/28 13:06
2020/09/29 08:30