Rails:使用before_save时绕过验证

时间:2013-07-23 04:26:54

标签: ruby-on-rails validation before-save

创建RecommendPost时,用户输入video_url,这是一个YouTube视频链接 并触发before_save :get_video_id,即处理video_url以获取video_id

例如,用户创建@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 个答案:

答案 0 :(得分:1)

调用

before_save并在验证运行后填充<{1>} 。在这种情况下,您正在验证 nil 的唯一性,如果video_id将会通过。

使用:allow_nil => true回调在验证前填充before_validate