2013-07-23 72 views
1

當在創建RecommendPost,用戶輸入一個video_url,這是一個YouTube視頻鏈接 並觸發before_save :get_video_id,這是處理video_url得到video_id導軌:驗證開始使用before_save

例如繞過,用戶創建@recommend_post,填入https://www.youtube.com/watch?v=R9ITLdmfdLI,然後:get_video_id被觸發,然後我們得到video_id R9ITLdmfdLI。最後,全部保存到@recommend_post

問題是,validates_uniqueness_of :video_id在這裏不起作用。 (我想只能推薦一次youtube視頻。)我猜這個驗證是被before_save方法繞過的嗎?

以及如何驗證video_id

回答

1

before_save被調用且video_id被填充在驗證運行後。在這種情況下,您正在驗證的唯一性,如果:allow_nil => true將通過該唯一性。

使用before_validate回調來填充video_id之前驗證。