另类验证helper
关联模型验证
class User < ApplicationRecord
has_many :articles
end
class Article < ApplicationRecord
belongs_to :user
validates_associated :user #这里单复数 和 belongs_to 一致
end
# 1、创建article 时 会去验证对应的user
# 2、方向性:在那边写,就是从那边验证触发
# 3、不要在两边去写
部分字段取出验证
class User < ApplicationRecord
validates_each :name,:surname do |record,attr,value|
# 添加错误
record.errors.add(attr,'不能以小写字母开头') if value =~ /\A[[:lower:]]\z/
end
end
利用其它类做验证
class DoValidator < ActiveModel::Validator # 自定义验证类 继承自ActiveModel::Validator
def validate(record)
# record 可以认为它是对象
if record[:name] =~ /\Admy+/
# 这里是向 加入数组 不是等号
record.errors[:base] << '名字不能以dmy开头'
end
end
end
class User < ApplicationRecord
validates_with DoValidator
# 接 类名 不加(冒号:)
end