条件验证
有时你可能只需要在特定条件下验证记录。
class User < ApplicationRecord
validates :name, presence: true, if: :admin?
def admin?
conditional here that returns boolean value
end
end
如果条件非常小,则可以使用 Proc:
class User < ApplicationRecord
validates :first_name, presence: true, if: Proc.new { |user| user.last_name.blank? }
end
对于否定条件,你可以使用 unless
:
class User < ApplicationRecord
validates :first_name, presence: true, unless: Proc.new { |user| user.last_name.present? }
end
你也可以传递一个字符串,它将通过 instance_eval
执行:
class User < ApplicationRecord
validates :first_name, presence: true, if: 'last_name.blank?'
end