Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在用户更新时,将Authlogic validate\u login\u字段设置为false_Ruby On Rails_Ruby_Authlogic - Fatal编程技术网

Ruby on rails 在用户更新时,将Authlogic validate\u login\u字段设置为false

Ruby on rails 在用户更新时,将Authlogic validate\u login\u字段设置为false,ruby-on-rails,ruby,authlogic,Ruby On Rails,Ruby,Authlogic,我们有一个用户的当前数据库,这些用户的用户名中可以有任何符号。我们已经开始使用authlogic进行身份验证。因此,任何更新其信息的当前用户都无法通过验证,因为他们的登录名包含不可接受的字符 我们希望防止新用户注册时使用authlogic不接受的符号,但那些登录时已经使用这些符号的用户可以继续使用这些符号 我知道我需要使用这样的东西: acts_as_authentic do |c| c.validate_login_field = false end 作为真实的行为| c、 验证\登录\字

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

我们希望防止新用户注册时使用authlogic不接受的符号,但那些登录时已经使用这些符号的用户可以继续使用这些符号

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

acts_as_authentic do |c| c.validate_login_field = false end 作为真实的行为| c、 验证\登录\字段=false 结束
我的问题是,对于已经存在的用户,如何将validate_login_字段设置为false,而对于新注册的用户,如何将其保留为默认值true?谢谢

我建议忘记Authlogic中针对您的特定案例的特定验证功能(即将其保留为
c.validate\u login\u field=false
)并将
:with
子句设置为正则表达式,以确保Authlogic的用户名有效;将
:if
子句设置为某个进程或方法私有方法,如果需要进行验证,则返回true(使用您自己设计的特定于应用程序的逻辑)

或者您不能打开
验证登录字段
并添加
:如果
选项验证登录字段选项的格式

更新:

实际上,忘记它是个坏主意,因为在这种情况下,您必须为每个可能的验证提供
:if
选项。 不仅对于
验证登录字段选项的格式,而且对于
验证登录字段选项的长度和唯一性