2018-07-16达到条件才验证

2018-07-16  本文已影响0人  护念

条件性验证

可以用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
上一篇 下一篇

猜你喜欢

热点阅读