Вы можете сделать это еще короче и слаще. Предложение :if
примет атрибут так же легко. Так что, если can_send_email является логическим атрибутом Person, это будет работать:
class Person < ActiveRecord::Base
validates_presence_of :description, :if => :can_send_email?
end
Нет необходимости создавать другой метод только для проверки этого атрибута. И если вы заметили дополнительный знак вопроса в конце can_send_email
, это потому, что Rails позволяет вам делать это с логическими атрибутами. Мне это нравится, потому что это делает цель кода более понятной.