class User < ApplicationRecord
has_many :articles
end
class Article < ApplicationRecord
belongs_to :user
validates_associated :user #這里單復(fù)數(shù) 和 belongs_to 一致
end
# 1旗吁、創(chuàng)建article 時(shí) 會去驗(yàn)證對應(yīng)的user
# 2勾给、方向性:在那邊寫,就是從那邊驗(yàn)證觸發(fā)
# 3钧椰、不要在兩邊去寫
部分字段取出驗(yàn)證
class User < ApplicationRecord
validates_each :name,:surname do |record,attr,value|
# 添加錯(cuò)誤
record.errors.add(attr,'不能以小寫字母開頭') if value =~ /\A[[:lower:]]\z/
end
end
利用其它類做驗(yàn)證
class DoValidator < ActiveModel::Validator # 自定義驗(yàn)證類 繼承自ActiveModel::Validator
def validate(record)
# record 可以認(rèn)為它是對象
if record[:name] =~ /\Admy+/
# 這里是向 加入數(shù)組 不是等號
record.errors[:base] << '名字不能以dmy開頭'
end
end
end
class User < ApplicationRecord
validates_with DoValidator
# 接 類名 不加(冒號:)
end