Мне нужно написать проверку, чтобы убедиться, что новые записи, созданные в нашем приложении, не имеют повторяющихся имен. Мне сказали, что validates_uniqueness не будет работать в этом случае, потому что приложение уже использует его для проверки создания исходного имени. Эта проверка гарантирует, что когда запись обновляется новым именем, она тоже является оригинальной ... это своего рода проверка анти-области. Запрос также должен быть нечувствительным к регистру, поэтому мне нужно написать его, используя функцию UPPER () MYSQL, поэтому мне нужно использовать запрос к массиву, а не хеш.
Вот набросок псевдокода.
Запрос к базе данных ЗАКАЗЧИКА.
Убедитесь, что UPDATED_RECORD является уникальным для NAME.
Если это НЕ уникальный, проверьте, принадлежит ли его ID к записи, которая обновляется.
Если это так, это нормально, так как это тот же идентификатор и должно быть разрешено сохранить то же имя.
Если запрос находит то же имя, с которым связан другой идентификатор, то должно отображаться сообщение об ошибке, например «Это имя уже используется XXXX».
Я довольно новичок в Rails, и у меня было время, чтобы правильно структурировать это.
Вот некоторые пояснения, почему я не думаю, что validates_uniqueness будет работать здесь.
Я думаю, что проблема заключается в наличии нескольких версий одной и той же записи, поскольку обновленная запись является новой версией одной и той же записи (с одинаковым идентификатором записи), тогда это допустимо. Но если новая версия записи обновляется с именем, которое уже используется существующей записью (с другим идентификатором записи, то это не должно быть разрешено. Например, имея две записи версии термина, {: record_id => 100,: name => "Test"} & {: record_id => 100,: name => "Test"}, должно быть разрешено, поскольку эти две записи являются версиями одного и того же термина. Но с двумя записями, {: record_id => 100, : name => "Test"} & {: record_id => 201,: name => "Test"}, не допускается, так как это приведет к тому, что две версии будут иметь одно и то же имя, но связанные с разными терминами.