пользовательская проверка rails в форме и серверной части

#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. Извините, но проверяется только уникальность из базы данных. Не в форме в том виде, в каком она заполнена.