2010-09-22 64 views
1

比方說,我在收集視圖用戶輸入的視圖中有一個form_tag。通過我通過params散列獲得的輸入,我想驗證一些htis信息,例如電子郵件電話名稱。Ruby on Rails驗證問題內部控制器

我可以在控制器中進行驗證還是這是一件壞事?我不打算將我得到的東西保存到數據庫或其他任何東西,它只是放入電子郵件中發送出去,但我想在發送之前驗證這些東西。

謝謝。

編輯:

發現這個http://www.viddler.com/explore/rails3/videos/6/

class Test 
include ActiveRecord::Validations 
validates_presence_of :name, :email 
attr_accessor :name, :email 
end 

回答

2

你可以使用任何你需要的是相關的對象,不需要保存它的模型。爲了保持控制器整潔,在模型中保持這樣的東西是可取的。假設你有一個用戶模型:

#controller 
@user.new params[:user] 
@user.check_valid 
@user.save # is optional 

#user.rb 

def check_valid 
    !email.blank? and !phone.blank? 
end 
+2

爲什麼不只是@ user.valid?在控制器?它看起來像check_valid方法只是本地ActiveRecord方法的重複.. – fantactuka 2010-09-22 08:22:17

+0

當我開始寫答案時,我想到的是比驗證對象更靈活。正如用戶所述,他希望檢查'這些信息'。我會編輯答案來澄清這一點。 – mark 2010-09-22 08:40:13

+0

所以我想我會得到你的說法,構建模型,並在模型中使用validates_命令,但只是在時間到了的時候不保存它。感謝您的建議。聽起來像一個計劃:)再次感謝。 – RoR 2010-09-22 08:50:46