# # We have a simple top-level route equivalent to `/slug`. Because of this, # we want to verify that newly created records don't overlap with a previously- # defined `slug` -- in other words, slug values should be unique across all # relevant models. Except also, models might use "username" instead of "slug". # # "Slug-like" models are all included in a cross-model-uniqueness check. An # impacted models are checked for the existence of a record matching a given # value. Additionally, we have some special cases (eg, sitemap) that we want to # apply across all registered models. # class CrossModelSlug MODELS = { "User" => :username, "Page" => :slug, "Podcast" => :slug, "Organization" => :slug }.freeze class << self def exists?(value) # Presence check is likely redundant, but is **much** cheaper than the # cross-model check return false if value.blank? value = value.downcase return true if value.include?("sitemap-") # https://github.com/forem/forem/pull/6704 MODELS.detect do |class_name, attribute| class_name.constantize.exists?({ attribute => value }) end end end end