diff --git a/lib/friendly_id/history.rb b/lib/friendly_id/history.rb index 6039b7c15..49d36a8d2 100644 --- a/lib/friendly_id/history.rb +++ b/lib/friendly_id/history.rb @@ -75,8 +75,14 @@ def self.included(model_class) def build_slug return unless should_generate_new_friendly_id? # Allow reversion back to a previously used slug - slugs.where(:slug => friendly_id).delete_all - slugs.build :slug => friendly_id + Slug.transaction do + select = slugs.where(:slug => friendly_id) + unless Slug.connection.adapter_name =~ /sqlite/i + Slug.connection.execute "#{select.to_sql} FOR UPDATE" + end + select.delete_all + slugs.build :slug => friendly_id + end end # Adds a finder that explictly uses slugs from the slug table.