在用户更新时将Authlogic validate_login_field设置为false

时间:2010-07-06 22:58:29

标签: ruby-on-rails ruby authlogic

我们有一个用户的当前数据库,其用户名中可以包含任何符号。我们已经开始使用authlogic进行身份验证。因此,任何更新其信息的当前用户都无法通过验证,因为他们的登录信息具有不可接受的字符。

我们希望阻止新用户注册使用authlogic不接受的符号,但是已经在登录中使用这些符号的用户继续使用它们。

我知道我需要使用这样的东西:

acts_as_authentic do |c|
  c.validate_login_field = false
end

我的问题是如何为现有用户将validate_login_field设置为false,但是对于注册的新用户,将其保留为默认值true?谢谢。

2 个答案:

答案 0 :(得分:1)

我建议在特定情况下忘记Authlogic中的特定验证功能(即将其保留为c.validate_login_field = false)并使用validates_format_of:with子句设置为正则表达式以确保Authlogic有效的用户名和某个proc或方法私有方法的:if子句,如果应该完成验证,则返回true(使用您自己设计的某些特定于应用程序的逻辑)

答案 1 :(得分:1)

或者您无法转为validate_login_field并将:if选项添加到validates_format_of_login_field_options

<强>更新

实际上忘记了,这是一个坏主意,因为在这种情况下,您必须为每个可能的验证提供:if选项。 不仅适用于validates_format_of_login_field_options,适用于validates_length_of_login_field_optionsvalidates_uniqueness_of_login_field_options