【问题标题】:using scope in Rails custom validations在 Rails 自定义验证中使用范围
【发布时间】:2012-04-29 11:48:26
【问题描述】:

我想在自定义验证中应用范围限制器

我有这个产品型号 其中有 make,model,serial_number, vin 作为属性

现在我有一个自定义验证来检查 vin 如果 vin 不存在来检查数据库中 make+model+serial_number 的唯一性组合,类似这样

验证 :combination_vin,:if => "vin.nil?"

def combination_vin 
  if Product.exists?(:make => make,:model => model,:serial_number => serial_number)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
  end
end

我想在这个验证器中针对 user_id 引入一个范围

现在我知道我可以很容易地写这个来实现同样的使用

 def combination_vin
    if Product.exists?(:make => make,:model => model,:serial_number => serial_number,:user_id => user_id)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
    end
 end

但出于好奇,我在想自定义验证是否有范围验证器(类似于 {:scope => :user_id}) 这样我就不必在 exists 中传递那个额外的 user_id 了吗?哈希

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 validation ruby-on-rails-3.2 rails-3.1


    【解决方案1】:

    试试:

    validate :combination_vin , :uniqueness => { :scope => :user_id } , :if => "vin.nil?"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多