我们有一个用户的当前数据库,其用户名中可以包含任何符号。我们已经开始使用authlogic进行身份验证。因此,任何更新其信息的当前用户都无法通过验证,因为他们的登录信息具有不可接受的字符。
我们希望阻止新用户注册使用authlogic不接受的符号,但是已经在登录中使用这些符号的用户继续使用它们。
我知道我需要使用这样的东西:
acts_as_authentic do |c| c.validate_login_field = false end
我的问题是如何为现有用户将validate_login_field设置为false,但是对于注册的新用户,将其保留为默认值true?谢谢。
答案 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_options
和validates_uniqueness_of_login_field_options