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? }