【问题标题】:Authlogic, can't update user because of validationAuthlogic,由于验证无法更新用户
【发布时间】:2011-01-31 18:09:45
【问题描述】:

我有这样的 authlogic 设置

acts_as_authentic do |config|
  config.login_field = 'email'
  config.merge_validates_length_of_email_field_options :in => 5..50
  config.validates_length_of_password_field_options = {:on => :update, :minimum => 4 }
  config.validates_length_of_password_confirmation_field_options = {:on => :update, :minimum => 4}
end

我无法更新用户属性,因为 password 和 password_confirmation 尝试在保存时进行验证,但它们为 nil。有什么方法可以暂时关闭验证,还是有更好的解决方案?

【问题讨论】:

  • 当你更新你的用户对象时,你是怎么做的?请发布该代码。

标签: ruby-on-rails ruby validation authlogic


【解决方案1】:

这对我来说是这样的:

向您的验证语句添加一个条件,如下所示:

config.validates_length_of_password_field_options = {:on => :update, :minimum => 4, :if => :should_validate? }

然后将自定义should_validate? 函数添加到您的用户模型。例如你可以做

attr_accessor :updating_password    

def should_validate?
  updating_password or new_record?
end

通过这种方式,您可以随时在控制器中明确设置user.updating_password = true,如果您不想进行任何验证,请保持原样。

(这是我的第一个回答,希望对你有所帮助。否则,请不要犹豫,纠正我。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多