條件驗證
有時你可能只需要在特定條件下驗證記錄。
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