面试题答案
一键面试模型层邮箱格式验证
在Ruby on Rails项目的模型层,可以使用validates_format_of
方法对邮箱格式进行验证。假设模型名为User
,代码如下:
class User < ApplicationRecord
validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, message: "请输入有效的邮箱地址"
end
上述代码中,validates_format_of
方法的第一个参数是要验证的属性email
,with
参数后面跟着一个正则表达式,用于匹配邮箱的格式。message
参数设置验证失败时显示的错误信息。
视图层显示错误提示信息
在视图层(例如views/users/new.html.erb
或views/users/edit.html.erb
),Rails提供了内置的机制来显示错误提示信息。通常在表单中使用form_with
(或旧版本的form_for
)来创建表单,并且可以通过@user.errors
来获取模型验证失败的错误信息。示例代码如下:
<%= form_with(model: @user, local: true) do |form| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :email %>
<%= form.text_field :email %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
上述代码中,首先通过@user.errors.any?
判断是否有错误,如果有,则遍历@user.errors.full_messages
并在无序列表中显示每一条错误信息。这样当邮箱格式验证失败时,用户就可以看到友好的错误提示信息。