Проверка наличия дублирующейся записи в базе данных в rails 4

#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
  

Для получения дополнительной информации, пожалуйста, обратитесь к этой ссылке.