Ruby on rails 3 具有唯一作用域条件的Rails 3验证
例如,我的模型验证中有以下代码:Ruby on rails 3 具有唯一作用域条件的Rails 3验证,ruby-on-rails-3,validation,model,Ruby On Rails 3,Validation,Model,例如,我的模型验证中有以下代码: validates :fb_user_id, :uniqueness => {:scope => :campaign_id} 但是对于不同的用户,campaign\u id的值可能为-1,这会引发验证异常。 有可能这样做吗 validates :fb_user_id, :uniqueness => {:scope => :campaign_id}, if :campaign_id != -1 如果条件内联在validates语句
validates :fb_user_id, :uniqueness => {:scope => :campaign_id}
但是对于不同的用户,campaign\u id
的值可能为-1,这会引发验证异常。
有可能这样做吗
validates :fb_user_id, :uniqueness => {:scope => :campaign_id}, if :campaign_id != -1
如果条件内联在validates语句中,我可以添加一个
吗?如果不可能,我该如何做?遵循MagicMarker的思想,我找到了一个解决方案:
validates :fb_user_id, :uniqueness => {:scope => :campaign_id}, :if => :valCampaign?
def valCampaign?
if campaign_id == -1
return false # skip the validation
else
return true # run the validation
end
end
根据Magicmarker的想法,我找到了一个解决方案:
validates :fb_user_id, :uniqueness => {:scope => :campaign_id}, :if => :valCampaign?
def valCampaign?
if campaign_id == -1
return false # skip the validation
else
return true # run the validation
end
end
是的,你能做到。我从不使用新的散列语法,所以我会这样写:验证:fb_user_id,:university=>{:scope=>:campaign_id},:if=>campaign_id!=-1
是的,您可以这样做。我从不使用新的散列语法,所以我会这样写:验证:fb_user_id,:university=>{:scope=>:campaign_id},:if=>campaign_id!=-1
谢谢@damoiser这救了我一天谢谢@damoiser这救了我一天