数据验证能确保只有合法的数据才会存入数据库 数据存入数据库之前的验证方法
本文重点分享一下,多对多关联模型层的数据验证方法,以及友好的用户提醒
模型层
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
attr_accessor :roles
end
用户 (user) 和角色 (role),多对多,即 has_and_belongs_to_many 的关系
系统要求,系统管理员在创建用户时,必须指明用户的角色,否则不能创建用户,系统需要给出友好提醒
控制器
class UsersController < ApplicationController
def create
@user = User.create(role_ids:params[:role_ids])
end
end
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
validate :minimum_one_role
def minimum_one_role
errors.add(:base, '请至少要选择一个角色') if roles.blank?
end
end
class User < ActiveRecord::Base
has_and_belongs_to_many :roles
validates :roles, presence: true
end
此时,如果管理员不勾选用户角色为“研究者” ,“读片员“中的一个或多个
则调用 User.create 方法时,模型层对 roles 的数据验证出错,并将出错信息添加到 errors 错误集合中
<% unless @user.blank? %>
<% if @user.errors.any? %>
<ul>
<% @user.errors.each do |attr,msg| %>
<li class="error_message"><%= msg %></li>
<% end %>
</ul>
<% end %>
<% end %>
.error_message{
background-color: red;
}