Rails 请教一则 Rails uniqueness validates 的问题

wuwx · 2012年09月18日 · 最后由 wuwx 回复于 2012年09月18日 · 2498 次阅读

在模型中增加

validates :task_id, :uniqueness => true

就会保证表中的 task_id 是唯一的 我的数据表中还有一个 state 字段用户记录模型的状态,而我希望只有在 state 为某个特殊值的时候才进行 uniqueness 检测该怎么写呢?

validates :task_id, :uniqueness => { :scope => :state }

这个不是我想要的效果的说,因为在业务里 state 的其他值是允许 task_id 重复的

文档里有这个:http://guides.rubyonrails.org/active_record_validations_callbacks.html#using-a-symbol-with-if-and-unless

不过这个业务逻辑看上去有些奇怪,确定不是陷入了这种境地么:http://mywiki.wooledge.org/XyProblem

#1 楼 @5long 感谢感谢! 业务上就是用户可以申请任务,这个任务完成后获得奖励后可以继续申请这个任务,state 是记录用户当前任务状态,防止用户在未完成的情况下不断地重复申请

需要 登录 后方可回复, 如果你还没有账号请 注册新账号