在Rails 3中,我希望使用模型的validates
选项查看属性的值是否有效,而不尝试保存或创建。
我正在编写一个AJAX API的后端,应根据
检查用户名validates :username, :length => {:minimum => 2, :maximum => 50}, :exclusion => {:in => RESERVED_USERNAMES}, :format => MY_REGEX, .etc
在用户模型中。这可以在注册表单中的用户名字段旁边创建一个小刻度或交叉,这样用户就不必等待查看是否使用了用户名。
我可以将它与正则表达式进行比较,但是为了保持我的代码DRY,我认为在用户模型中使用验证会更好。
任何人都知道我可以做些什么:
username = params[:username]
if User.not_found(:username => username) && User.validate(:username => username)
#yay!
else
#nope
end
(我已经not_found
正在工作)。
答案 0 :(得分:2)
除了运行所有验证之外,您还可以尝试检查与用户名相关的特定错误(您需要获取错误消息)。
@user = User.new(params[:user])
if @user.invalid? && @user.errors[:username].any?
# yay!
else
# nope
end
您可以在不将用户持久保存到数据库的情况下运行它,因为所使用的方法(包括#new和#valid?)都没有实际保存对象。
答案 1 :(得分:0)
您可以使用用户名param创建新用户,然后检查错误:
@user = User.new( :username => params[:username] )
@user.valid?
if @user.errors.include? :username
# username error
end