條件驗證

有時你可能只需要在特定條件下驗證記錄。

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