У меня есть следующее правило проверки на одной из моделей,рельсы проверки уникальности при обновлении
validates :reciept_num, :presence => true,
:numericality => { :only_integer => true },
:uniqueness => true,
:on => :update,
:if => "!status_id.nil?"`
Теперь, когда я обновляю объект с помощью метода update_attributes
он дает мне следующее сообщение об ошибке
reciept_num: has already been taken
.
При обновлении объекта я не изменяю атрибут reciept_num? Итак, почему эта проверка не выполняется при обновлении?
Если я не обновляю значение, он должен быть старым и, следовательно, должен пройти проверку. Я что-то упускаю.
благодарит за ваш ответ. после прочтения этого мне пришло в голову, что у данных семян, которые я создал, были двойные записи. – robert
И, ': uniqueness => true' на самом деле не гарантирует уникальность даже без условий, для этого вам нужно уникальное ограничение внутри базы данных. –
Му слишком короткая, вы можете уточнить? – maletor