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这救了我一天