Я использую рельсы 2.3.8, и у меня есть модель с двумя атрибутами, по которым я хочу проверить.
У меня есть версия и номер файла, и мне нужно проверить уникальность номера файла при обновлении, но только в соответствии с каждой отдельной уникальной версией.
Итак, я попробовал
validates_uniqueness_of :file_number, :scope => :version, :on => :update
Я неоднократно получаю "Номер файла уже занят"
Не существует специальной логики с номером файла, кроме как вbefore_create, где я добавляю один к количеству элементов для этой версии.
РЕДАКТИРОВАТЬ: Вот SQL, который выполняет сервер.http://pastie.org/private/ysbwtiyouhgqkjsjjbooa Идентификатор здесь - это идентификатор записи, которую я обновляю, а возвращаемая из запроса - другая запись.
Есть идеи?
РЕДАКТИРОВАТЬ - Я получил его!РЕШЕНИЕ:
Оказывается, что проверка не просматривает выбранный список записей mymodel, который будет определен как
mymodel принадлежит проекту и проекту has_many mymodel
, поэтому сследующий трюк сработал.
validates_uniqueness_of: номер_файла,: scope => [: версия,: project_id],: on =>: обновление