在模型中增加
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 是记录用户当前任务状态,防止用户在未完成的情况下不断地重复申请