#ruby-on-rails #ruby-on-rails-3 #client-side-validation #custom-validators
#ruby-on-rails #ruby-on-rails-3 #проверка на стороне клиента #пользовательские средства проверки
Вопрос:
У меня есть форма, для которой мне нужна специальная проверка. Существует поле с именем fund_name и поле с именем company_name (из таблиц funds и companies соответственно, где у компании может быть много фондов). Информация о компании и фонде берется от пользователя в одной форме (с вложенными атрибутами)
Требование заключается в том, что название компании (или фонда) должно быть уникальным для названий компаний и фондов. Я создал пользовательский валидатор и удаленный валидатор для плагина проверки на стороне клиента.
Проблема в том, что это не подтвердило бы уникальность ТЕКУЩЕЙ компании и фонда. Я мог бы переопределить поля с помощью blur, сначала вызвав isValid для поля, но я хотел, чтобы вышеупомянутый плагин обслуживал это.
Предложения о том, как это лучше всего сделать?
Ответ №1:
Попробуйте:
validates :fund_name, presence: true, uniqueness: { scope: :company_name }
Больше информации здесь.
Комментарии:
1. Это было бы полезно только в том случае, если fund_name и company_name находятся в одной модели. Название фонда хранится как :name в таблице funds, а название компании хранится как:name в таблице companies.
Ответ №2:
Это может вам помочь: напишите в своей модели
validates :name,presence: true, :uniqueness => {
:case_sensitive => false,
scope: :company_name
}
Комментарии:
1. Извините, но проверяется только уникальность из базы данных. Не в форме в том виде, в каком она заполнена.