2018-07-15-1

另类验证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

你可能感兴趣的:(2018-07-15-1)