加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails自定义验证中使用范围

发布时间:2020-12-17 03:21:44 所属栏目:百科 来源:网络整理
导读:我想在自定义验证中应用范围限制器 我有这个产品型号 其中有make,model,serial_number,vin作为属性 现在我有一个自定义验证来检查vin如果vin不存在,以检查数据库中make model serial_number唯一性的组合 validate :combination_vin,:if = “vin.nil?” def c
我想在自定义验证中应用范围限制器

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

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

validate :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,: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})
所以我不必在存在中传递额外的user_id?哈希

谢谢

解决方法

试试:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读