validates_uniqueness_of ... и если - PullRequest
3 голосов
/ 01 июля 2010

Как правильно писать?

validates_uniqueness_of :a, :scope => [:b, :c], :unless => !d.nil?

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

Это очень просто:

validates_uniqueness_of :a, :scope => [:b, :c], :unless => :d
2 голосов
/ 01 июля 2010

Просто передайте Proc, который возвращает true или false, для опции :if или :unless:

validates_uniqueness_of :a, :scope => [:b, :c], :unless => Proc.new { |obj| !obj.d.nil? }
validates_uniqueness_of :a, :scope => [:b, :c], :if => Proc.new { |obj| obj.d.nil? }

(Это предполагает, что d является свойством или методом вашей модели.)

Конечно, это не идеальная гарантия уникальности.По умолчанию существует условие гонки, которое может разрешить дублирование.См. документацию для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...