Это работает для меня в Rails 3, хотя я проверяю, присутствует ли одно или другое поле:
validates :last_name, :presence => {unless => Proc.new { |a| a.company_name.present? }, :message => "You must enter a last name, company name, or both"}
Это будет проверять наличие фамилии, только если название компании пустое. Вам нужен только один, потому что оба будут пустыми в состоянии ошибки, поэтому иметь валидатор для company_name также избыточно. Единственное, что раздражает, так это то, что он выплевывает имя столбца перед сообщением, и я использовал ответ из этого вопроса о гуманизированных атрибутах, чтобы обойти его (просто установив гуманизированный атрибут last_name в ""