同様の質問hereがあるようですが、誰もそれに答えられませんでした。それはまた、少し異なるようです。update_with_passwordを使用してRails 5セキュリティ拡張エラーを作成する
私は、レール4.2.4からレール5.0.0.1にアップグレードしています。 私は30日後にパスワードの有効期限を実行しようとすると、それは問題は二行目で発生した更新アクションを通過:
def update
resource.extend(Devise::Models::DatabaseAuthenticatablePatch)
if resource.update_with_password(resource_params)
warden.session(scope)['password_expired'] = false
set_flash_message :notice, :updated
sign_in scope, resource, :bypass => true
redirect_to stored_location_for(scope) || :root
else
clean_up_passwords(resource)
respond_with(resource, action: :show)
end
end
そしてここでは、RANを取得し、そのモジュールです:
module Devise
module Models
module DatabaseAuthenticatablePatch
def update_with_password(params, *options)
new_password = params[:password]
new_password_confirmation = params[:password_confirmation]
result = if new_password.present? && new_password_confirmation.present?
update_attributes(params, *options)
else
self.assign_attributes(params, *options)
self.valid?
self.errors.add(:password, new_password.blank? ? :blank : :invalid)
self.errors.add(:password_confirmation, new_password_confirmation.blank? ? :blank : :invalid)
false
end
clean_up_passwords
result
end
end
end
end
ヒットするとエラーが発生するupdate_attributes(params, *options)
このエラーが発生します。
undefined method `<<' for #<OldPassword::ActiveRecord_AssociationRelation:0x007ffe59a0ffa0>
誰かが私にこのことを理解させることができれば、それはすばらしいでしょう。
ありがとうございます。