微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ActiveRecord基于动态属性的查找器是否是线程安全的?

如何解决ActiveRecord基于动态属性的查找器是否是线程安全的?

| 根据这篇(较旧的)帖子,这些Rails 3发现者具有竞赛条件。就像是
 User.find_or_create_by_username(:username => \'uuu\',:password => \'xxx\')
可能会根据该帖子在某些条件下创建两个记录。 这仍然与Rails 3.0+相关吗?谢谢     

解决方法

是的。在执行第一条语句和创建对象的时间量内,可以并行执行第二条语句。 没有独占锁。 防止这种情况的最佳方法是在模型中添加唯一的验证,并在数据库中添加唯一的索引。这样,如果您尝试创建两个具有相同字段的记录,数据库将引发错误。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。