创建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
?
答案 0 :(得分:1)
before_save
并在验证运行后填充<{1>} 。在这种情况下,您正在验证 nil 的唯一性,如果video_id
将会通过。
使用:allow_nil => true
回调在验证前填充before_validate
。