写作的正确方法是什么?
validates_uniqueness_of :a, :scope => [:b, :c], :unless => !d.nil?
答案 0 :(得分:2)
只需将Proc
传递给:if
或:unless
选项,返回true或false:
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
是您模型的属性或方法。)
当然,这不是唯一性的完美保证。默认情况下,存在可能允许重复的竞争条件。有关详细信息,请参阅documentation。
答案 1 :(得分:2)
非常简单:
validates_uniqueness_of :a, :scope => [:b, :c], :unless => :d