2013-07-23 38 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之前验证。