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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容