Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 验证两个字段的唯一性,但如果第二个字段为空,则避免_Validation_Ruby On Rails 3 - Fatal编程技术网

Validation 验证两个字段的唯一性,但如果第二个字段为空,则避免

Validation 验证两个字段的唯一性,但如果第二个字段为空,则避免,validation,ruby-on-rails-3,Validation,Ruby On Rails 3,我想验证两个字段的唯一性,但若第二个字段为零,则忽略验证 我有两个模型 “资产”和“公司” 资产有一个唯一的标识符代码我想做的是验证公司资产标识符代码的唯一性。 我们可以通过电话核实 class Asset < ActiveRecord::Base validates :identifier, :uniqueness => {:scope => :company_id} end class资产{:范围=>:company\u id} 结束 但这也不允许两项资产为零 如

我想验证两个字段的唯一性,但若第二个字段为零,则忽略验证 我有两个模型 “资产”和“公司” 资产有一个唯一的标识符代码我想做的是验证公司资产标识符代码的唯一性。 我们可以通过电话核实

class Asset < ActiveRecord::Base
  validates :identifier, :uniqueness => {:scope => :company_id} 
end
class资产{:范围=>:company\u id}
结束
但这也不允许两项资产为零

如果标识符代码的唯一性为零,我怎么能忽略它的验证呢

我们可以传递一个块,或者添加
除了
或者类似的东西吗?我们可以在控制器中使用过滤器,我正在寻找类似的解决方案

验证:标识符,:唯一性=>{:范围=>:company\u id},除非{:identifier.is\u nil?}

我可以在验证回调之前跳过一些验证吗???

Ruby 1.8.7

validates :identifier, :uniqueness => { :scope => :company_id } , :unless => lambda { |asset| !asset.identifier.nil? }
Ruby 1.9.3

   validates :identifier, :uniqueness: { scope: :company_id }, unless: lambda { |asset| !asset.identifier.nil? }

这在Rails 4.0.1中对我很有用:

validates_uniqueness_of  :identifier, :scope => :company_id, :allow_blank => true
我可以创建标识符为空的对象,但无法在同一家公司内创建具有相同标识符的两个对象

PS:我知道这是很久以前发布的,但这种方式看起来也不错。这是我的建议 我在后面的一个问题上找到了答案