2011-04-23 89 views
0

我需要使用shortcut_url對用戶模型進行驗證以適合正則表達式。模型中的自定義驗證

user.shortcut_url[/^[a-z]|[A-Z]*/] 

我希望它拋出一個錯誤並添加到用戶的消息。我這翅沒有事先研究,並與

def validate_shortcut_url 
if self.shortcut_url 
    if self.shortcut_url[/^[a-z]|[A-Z]*/] != "" 
    return true 
    else 
    self.errors.full_messages << "Shortcut URL must begin with a letter" 
    return false 
    end 
end 
end 

上來然後把

validate :validate_shortcut_url 

在我的模型的頂部。現在。做這件事的正確方法是什麼?

回答

1

這似乎是很長的路要走圍繞這樣 爲什麼難道不你只是做

validates_format_of :validate_shortcut_url, :with => /^[a-z]|[A-Z]*/, :message => "Shortcut URL must begin with a letter" 
1

運行自定義驗證,只要致電:

validate :validate_shortcut_url 
模型

。此外,由於你是在用戶模式,你不需要在用戶傳遞 - 你可以使用selfself.shortcut_url

+0

現在就去試試吧。如果它有效,我會讓你成爲一個餅乾。或upvote你。無論你喜歡什麼 – 2011-04-23 17:13:55

+0

不是。均田。停止運行時錯誤,但沒有做任何事情。我將使用更新的代碼進行編輯。 – 2011-04-23 17:17:09

+0

嘗試添加:errors.add:base,「快捷方式URL必須以字母開頭」我假設正則表達式部分正在工作 - 我只是真的在處理「自定義驗證部分」。 – skaz 2011-04-23 17:20:19