2012-12-05 85 views
1

我在模型驗證具有例如這樣的代碼:Rails 3中驗證具有獨特的範圍條件

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

是的,你可以做到這一點。我永遠不會使用新的散列語法,所以我會這樣寫:'validates:fb_user_id,:uniqueness => {:scope =>:campaign_id},:if => campaign_id!= -1' – Magicmarkker

回答

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 
+0

Thanks @ damoiser 這節省了我的一天 – psantos