Rails 3验证,具有唯一范围条件

时间:2012-12-05 14:03:04

标签: ruby-on-rails-3 validation model

我在模型验证中有这样的代码:

  validates :fb_user_id, :uniqueness => {:scope => :campaign_id}

但是campaign_id可能会出现不同用户的值-1,从而引发验证异常。 可以做这样的事情吗?

 validates :fb_user_id, :uniqueness => {:scope => :campaign_id}, if :campaign_id != -1

我可以在验证声明中加入if conditions内联,或者如果不可能,我该如何处理?

1 个答案:

答案 0 :(得分:6)

按照MagicMarkker的想法,我找到了一个解决方案:

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