如何保存设备current_user

Ayd*_*kov -1 ruby-on-rails devise

尝试更新 current_user
\n但在递减计数器属性并收到验证错误后无法保存,最小密码长度为 6 个字符 \xe2\x80\x93

\n\n
current_user.crawl_counter -= 1\ncurrent_user.save!\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:

\n\n
class User < ActiveRecord::Base\n  devise :database_authenticatable, :registerable,\n         :recoverable, :rememberable, :trackable, :validatable\n\n  attr_accessible :email, :password, :password_confirmation, :remember_me, :crawl_counter\n  PASSWORD_REGEX = /^[a-zA-Z\\d]*$/\n  validates :password, format: { with: PASSWORD_REGEX, :message => I18n.t('errors.messages.password_invalid') }\nend\n
Run Code Online (Sandbox Code Playgroud)\n

Yul*_*ule 5

当您保存用户时,devise通常会检查密码是否正确并与password_confirmation匹配。密码显然没有存储在会话对象中。

您可以跳过验证:

current_user.save(validate: false)
Run Code Online (Sandbox Code Playgroud)

这不会检查密码并保存确定。仅当您不想验证抓取计数器字段时,这才有效