2012-02-23 19 views
0

我想驗證用戶的twitter用戶名,並寫了一個自定義驗證。然而,即使它看起來適用於irb會話,它仍然無法正常工作。這是我的代碼有自定義驗證不工作Rails模型

def twitter_user      
     begin 
      @t = Twitter.user :twitter 
     rescue Twitter::Error::NotFound => e 
      @t = nil 
     end 

     errors.add(:twitter, (" username does not exist")) if @t.nil? 

    end 

我也試過這樣:

def twitter_user 

      errors.add(:twitter, (" username does not exist")) unless begin Twitter.user :twitter 
      rescue Twitter::Error::NotFound => e 

      end 

     end 

即使Twitter的用戶名是有效的,會出現此錯誤。誰能解釋爲什麼?幫助,將不勝感激。

編輯:我已經把範圍縮小到帕拉姆獲得通過:嘰嘰喳喳,是不是從用戶的輸入。我如何獲得用戶傳遞的值?

+0

'開始; Twitter.user:twitter;救援Twitter :: Error :: NotFound; errors.add(:twitter,「用戶名不存在」);結束' – Reactormonk 2012-02-23 11:34:18

+0

這結束了同樣的問題。我想知道是否有什麼我可以忽略。只是看到它在irb會話中工作,我很困惑。 – Hugs 2012-02-23 11:39:26

+0

嘗試errors.add_to_base(「username does not exist」)..這會將錯誤添加到對象中。對於特定字段errors.add(:twitter,「username does not exist」)。我希望這個代碼在型號 – Jak 2012-02-23 11:56:48

回答

0

您必須添加validate方法在你的模型

爲前:

validate :user_is_exist 


def user_is_exist 
    errors.add(:twitter, (" username does not exist")) if @t.nil? 
end