Вы на правильном пути.Вы можете обойти проверки, передав метод в if
или unless
в качестве параметров проверки.В приведенном выше коде вы передаете его в качестве опции для средства проверки присутствия, а не для самой проверки.Переместите исключение из хеша и передайте ему имя метода или Proc
- на самом деле все, что возвращает истину или ложь.Вот пример:
validates :address,
:presence => { :message => "You must enter an address, website, or both." },
:unless => Proc.new { |store| store.address.nil? && store.website.present? }
Эта проверка будет выполняться каждый раз, за исключением случаев, когда у магазина нет адреса и есть веб-сайт.Если вам нужна более сложная логика, я рекомендую переместить ее из Proc
в метод.