首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用friendly-id和rails防止段塞生成中的竞争条件

使用friendly-id和rails防止段塞生成中的竞争条件
EN

Stack Overflow用户
提问于 2015-07-17 14:43:54
回答 1查看 143关注 0票数 1

在一个经常使用的应用程序中,我遇到了slug列上的唯一数据库约束的问题。

代码语言:javascript
复制
class Profile < ActiveRecord::Base
  extend FriendlyId

  friendly_id :slug_candidates, use: :slugged
end

配置文件调用中的方法:

代码语言:javascript
复制
  save! if valid?

有时这会导致Mysql2::Error: Duplicate entry 'evert-159226' for key 'index_profiles_on_slug'

我如何防止这种情况发生?

EN

回答 1

Stack Overflow用户

发布于 2015-08-18 07:44:07

欢迎来到Stack Overflow!您面临的问题是,当您执行保存操作时,Rails端验证不能保证唯一性。基本上有两种方法可以解决这个问题

  1. 会发出表级锁,以避免插入或更新其他记录。但是,这将严重影响您的性能
  2. 首先保存对象而不使用插件,然后使用原子操作不断更新它,直到成功。

我可以为你提供这两个示例代码,如果你愿意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31469816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档