Ты очень близко. Вам нужно сделать условную проверку (подробнее об этом в официальных руководствах ).
Вам нужно будет сделать следующее:
validates_presence_of :category_service_id, if: :service_provider?
# Marking the validation check method as private is optional, but recommended
private
def service_provider?
<Your code to check if segment is service_provider comes here>
end
message
не требуется, поскольку сообщение об ошибке по умолчанию будет can't be blank
.
Я бы настоятельно рекомендовал прочитать документ, упомянутый в ссылке выше, для лучшего понимания проверок.
ПРИМЕЧАНИЕ: метод service_provider?
не требуется, если вы используете перечисления для выбора между service_provider
и parent
, поскольку по умолчанию перечисления определяют методы option?
.