条件性验证
可以用if
/unless
从而决定在什么时候做验证,
1、可以接一个符号(方法);也可以接块
2、还可以接一个符号数组
3、if
/unless
还可以搭配使用
符号写法
validates :email,presence: true,if: :is_admin?
def is_admin?
role == 'admin'
end
接块写法
validates :email,presence: true, if: lambda {|user| user.role == 'admin'}
# 这里传了 对象进块哈
接符号数组
validates :email,presence: true,if: [:is_admin?,:age_conditon?]
def is_admin?
role == 'admin'
end
def age_conditon?
age < 35
end
if
/unless
搭配写法
validates :email,presence: true,if: :is_admin?,
unless: lambda do |user|
user.age >= 35
end
一个条件 验证多个字段
rails 提供了with_opitons 方法
# 当为管理员时,同时验证name 和 hom_page_urls
with_options if: :is_admin? do |user| # 注意这里要传 对象
# 写法 object.validates
user.validates :name,presence: true
user.validates :home_page_urls, length: {minimum: 6}
end
网友评论