2013-02-08 65 views
0

我在我的模型,一個單獨的方法來驗證這樣的:Rails的驗證使用errors.add

validate :validate_id 

def validate_id 
    errors.add(:base, "Id Should Not Blank") if self.project_id.blank? 
end 

我需要執行哪些會是這樣一個驗證:

validates_format_of:PROJECT_ID,:與=>/^(?!\ d + $)[a-z0-9 -_] * $/

它將驗證字母和數字只有下劃線和短劃線,並且它們之間沒有空格。

是否有任何可能的方式在我的方法validate_id中使用它。

在此先感謝

回答

1

嘗試:

def validate_id 
    errors.add(:base, "Id Should Not Blank") if /^(?!\d+$)[a-z0-9-_]*$/.match(self.project_id).nil? 
end 
+1

self.project_id.scan(?!/ ^(\ d + $)[A-Z0-9 \ -_] * $ /)空。 ? ==真的 這也工作。 謝謝 – Supersonic 2013-02-08 12:41:06

+1

歡迎@Hivltg,#scan返回正則表達式匹配的所有內容,#match返回匹配數據對象的第一個匹配項。 – shweta 2013-02-08 12:47:26