5

我想在我的自定義的驗證應用範圍限制使用範圍Rails中的自定義驗證

我有有製造商,型號,SERIAL_NUMBER,VIN爲屬性

現在我有一個自定義這個產品型號 驗證要檢查VIN如果VIN不存在於數據庫這樣的事情

驗證檢查製造商+型號+ SERIAL_NUMBER獨特的組合:combination_vin,如果=>「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,:model => model,: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是否存在?哈希

感謝

回答

6

嘗試:

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