diff --git a/models/site.rb b/models/site.rb index 2779fec3..8801122c 100644 --- a/models/site.rb +++ b/models/site.rb @@ -904,7 +904,7 @@ class Site < Sequel::Model end def add_tag_name(name) - add_tag Tag.find_or_create(name: name) + add_tag Tag.create_unless_exists(name) end def before_create diff --git a/models/tag.rb b/models/tag.rb index 6a140317..c744e323 100644 --- a/models/tag.rb +++ b/models/tag.rb @@ -17,7 +17,11 @@ class Tag < Sequel::Model def self.create_unless_exists(name) name = clean_name name return nil if name == '' || name.nil? - dataset.filter(name: name).first || create(name: name) + begin + dataset.filter(name: name).first || create(name: name) + rescue Sequel::UniqueConstraintViolation + dataset.filter(name: name).first + end end def self.autocomplete(name, limit=3)