From 703fd05025aa956668a0c6f78a95e5b80d2521d7 Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 17 Apr 2022 23:07:19 -0500 Subject: [PATCH] favgroups: don't allow favgroups to be named 'any' or 'none'. 'any' and 'none' are now reserved keywords for the favgroup: metatag. Also add a fix script to rename existing favgroups. --- app/models/favorite_group.rb | 1 + script/fixes/108_fix_reserved_favgroups.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100755 script/fixes/108_fix_reserved_favgroups.rb diff --git a/app/models/favorite_group.rb b/app/models/favorite_group.rb index 393d3dbc2..5a4e5818a 100644 --- a/app/models/favorite_group.rb +++ b/app/models/favorite_group.rb @@ -9,6 +9,7 @@ class FavoriteGroup < ApplicationRecord validates :name, presence: true validates :name, uniqueness: { case_sensitive: false, scope: :creator_id } validates :name, format: { without: /,/, message: "cannot have commas" } + validates :name, exclusion: { in: %w[any none], message: "can't be '%{value}'" } validate :creator_can_create_favorite_groups, :on => :create validate :validate_number_of_posts validate :validate_posts diff --git a/script/fixes/108_fix_reserved_favgroups.rb b/script/fixes/108_fix_reserved_favgroups.rb new file mode 100755 index 000000000..db38a880d --- /dev/null +++ b/script/fixes/108_fix_reserved_favgroups.rb @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +require_relative "base" + +with_confirmation do + FavoriteGroup.where(name: %w[any none]).find_each do |favgroup| + old_name = favgroup.name + favgroup.update!(name: "favgroup_#{favgroup.id}") + + Dmail.create_automated(to: favgroup.creator, title: "Your favorite group has been renamed", body: <<~EOS) + Your favgroup ##{favgroup.id} has been renamed from "#{old_name}" to "#{favgroup.name}". "#{old_name}" is no longer an allowed favgroup name. + You can go "here":/favorite_groups/#{favgroup.id}/edit to change your favgroup's name to something else. + EOS + end +end