Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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
Ruby on rails 存在两个或多个实体时的Rails验证_Ruby On Rails_Validation_Activerecord - Fatal编程技术网

Ruby on rails 存在两个或多个实体时的Rails验证

Ruby on rails 存在两个或多个实体时的Rails验证,ruby-on-rails,validation,activerecord,Ruby On Rails,Validation,Activerecord,我有两个专栏的名字 产品可用数量(整数)和产品可用日期(日期) 我需要对这些列执行模型级验证 验证应检查如果需要的产品为真,则应填充字段中的任何一个 当产品经理填写目录时,我们需要执行模型级验证,检查他是否应填写其中任何一个字段 建议我用任何优雅的方式为我的需求编写自定义验证 我试过这种方法 validates :product_available_count_or_product_available_on if product_required? def product_available_

我有两个专栏的名字

产品可用数量(整数)和产品可用日期(日期

我需要对这些列执行模型级验证

验证应检查如果需要的产品为真,则应填充字段中的任何一个

当产品经理填写目录时,我们需要执行模型级验证,检查他是否应填写其中任何一个字段

建议我用任何优雅的方式为我的需求编写自定义验证

我试过这种方法

validates :product_available_count_or_product_available_on if product_required?

def product_available_count_or_product_available_on
  //logic ???
end

自定义验证是满足我的需求的唯一途径。我可以使用Proc或任何其他方法来编写更好的代码。

我认为自定义验证是解决此类问题的最佳方法

validate :product_available_count_or_product_available_on if product_required?

def product_available_count_or_product_available_on
  if [product_available_count, product_available_on].compact.blank.size == 0
    errors[:base] << ("Please select alteast one.")
  end
end      

我在寻找第二个解决方案。
validates :product_available_count, :presence => { :if =>  product_required? && product_available_on.blank? }
validates :product_available_on, :presence => { :if =>  product_required? && product_available_count.blank? }