Вы уже можете сделать это с помощью переменных уровня модуля. Модули одинаковы независимо от того, из какого модуля они импортируются. Таким образом, вы можете сделать переменную переменной уровня модуля в любом модуле, в которой имеет смысл вставить ее, и получить к ней доступ или назначить ей из других модулей. Лучше было бы вызвать функцию, чтобы установить значение переменной или сделать ее свойством какого-то одноэлементного объекта. Таким образом, если вам понадобится запустить некоторый код при изменении переменной, вы можете сделать это, не нарушая внешний интерфейс вашего модуля.
Обычно это отличный способ сделать что-то - использование глобальных переменных редко - но Я думаю, что это самый чистый способ сделать это.
Вы в настоящее время захватываете только первого персонажа. Таким образом, вы, вероятно, хотите сделать что-то вроде [^<].*
(строка, начинающаяся с чего-либо, кроме <
, за которой следуют произвольные символы)
Вы можете использовать without
вместо with
в проверке
. Вы можете избежать меньше, чем, как предполагает Зише , но я не думаю, что это необходимо.
validates :first_name, format: { without: /</ }
https://guides.rubyonrails.org/active_record_validations.html#format
правка: включены точки @engineersmnky, намного проще.