#validation #ruby-on-rails-4.2
#проверка #ruby-on-rails-4.2
Вопрос:
У меня есть контакт модели с полями f_name, m_name, l_name и xyz_id. Я хочу проверить, присутствует ли в базе данных одна и та же запись (без учета регистра).
Я попробовал следующее утверждение в модели:
validates_uniqueness_of :f_name, scope: [:m_name, :l_name, :xyz_id], message: 'Contact already exist'
Приведенное выше утверждение может проверять регистр с учетом регистра, и мое требование — проверка без учета регистра. Любое предложение будет полезно для меня. Спасибо.
Пример:
record1 — f_name: fname, l_name: lname, m_name: mname, xzy_id: 1
record2 — f_name: Fname, l_name: Lname, m_name: Mname, xzy_id: 1
Таким образом, в принципе, система не должна позволять добавлять record2, поскольку record1 и record2 имеют одинаковые данные. Добавление отдельной проверки для каждого поля для проверки уникальности без учета регистра приведет к созданию списка из 4 сообщений об ошибках. Я стремлюсь показать одно сообщение с сообщением «Контакт уже существует»
Комментарии:
1. вы можете сделать false без учета регистра, например, validates_uniqueness_of:f_name, scope: [:m_name, :l_name, :xyz_id], сообщение: ‘Контакт уже существует’, :case_sensitive => false
2. добавление case_sensitive: false проверит регистр без учета регистра только для f_name. Но для области видимости он будет выполнять проверку с учетом регистра.
Ответ №1:
Вы можете использовать его следующим образом
validates_uniqueness_of :f_name, scope: [:m_name, :l_name, :xyz_id], message: 'Contact already exist', case_sensitive: false
Для получения дополнительной информации, пожалуйста, обратитесь к этой ссылке.