問題
サインインしたユーザの情報を更新したいができなかった。
Rails.logger.info(@user.errors.messages.inspect)
でログを見てみると、どうもパスワードがないため更新されない感じだった。
解決策
モデルで allow_blank
を適応させた
model.rb
validates :password, presence: true, length: {minimum: 5, maximum: 120}
だった場合、
model.rb
validates :password, presence: true, length: {minimum: 5, maximum: 120}, on: :create
validates :password, length: {minimum: 5, maximum: 120}, on: :update, allow_blank: true
のように、updateが呼ばれるときだけはallow_blank
で行う。
※ validates が重複してるので、うまくDRYでいける方法があれば教えて欲しいです…
参考
Devise 3 (rails 4) can't update user without password - Stack Overflow