条件验证

有时你可能只需要在特定条件下验证记录。

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