0
我需要在实际创建用户记录之前在登录字段上运行内置验证,有没有办法在Authlogic中执行此操作?原因是当用户键入新的登录名时,会调用AJAX来检查并查看登录信息的唯一性,有效性等。一旦完成,用户可以输入他的电子邮件来声明登录信息,这是一个2步处理。Authlogic在创建操作之前在登录时运行验证
我需要在实际创建用户记录之前在登录字段上运行内置验证,有没有办法在Authlogic中执行此操作?原因是当用户键入新的登录名时,会调用AJAX来检查并查看登录信息的唯一性,有效性等。一旦完成,用户可以输入他的电子邮件来声明登录信息,这是一个2步处理。Authlogic在创建操作之前在登录时运行验证
用户模型使用ActiveRecord验证,所以这不是特定于Authlogic。如果您想在模型上运行验证,您可以拨打user.valid?
。这将返回true
或false
,具体取决于整个模型是否有效。但是它也填充了user.errors
对象,因此您可以检查给定属性是否有效。
这是一些使用RJS做AJAX的代码。但是你可以使用任何东西,然后按照你的需要组织它。
user = User.new(params[:user])
user.valid? # we aren't interested in the output of this.
error = user.errors.on(:login)
if error
page.insert_html :before, "user_login", content_tag(:span, error, :class => "error_message")
end
你可能有兴趣在我的Mastering Rails Forms屏视频系列,我覆盖在第二插曲这个话题。
感谢Ryan,后来我了解到Authlogic利用ActiveRecord验证并最终使用validate_attributes插件。您的建议是一个很好的选择,谢谢分享。 – Bob 2009-08-04 15:22:19