У меня есть несколько таблиц, в которых используется однотабличное наследование, и значительное количество файлов моделей для каждой таблицы. Каждый файл модели имеет набор атрибутов по умолчанию, например:
class SpecialWidget < Widget
attribute :name, :string, default: "A Thing"
attribute :description, :text, default: "This is an awfully special widget."
end
Это полезно, потому что в моем случае name
и description
не могут быть изменены конечными пользователями, поэтому это хороший способ для мне установить значения, которые я все еще могу изменить, если мне нужно. Теперь я могу просто делать SpecialWidget.create
все, что хочу, а созданный SpecialWidget
будет иметь эти значения по умолчанию name
и description
.
Теперь, что я хочу сделать, это обновить name
или description
одного или нескольких типов Widget
, изменив значение в файле модели, например:
class SpecialWidget < Widget
attribute :name, :string, default: "A Thing"
attribute :description, :text, default: "This is a new description for this widget."
end
... и затем запустив какой-то команды через скрипт или консоль Rails для сброса всех Widget
name
и description
в базе данных до значений по умолчанию. Он не должен сбрасывать значения, для которых я не объявил значения по умолчанию.
Это должно быть выполнено с помощью объявления по умолчанию в коде, а не путем установки значений по умолчанию в схеме базы данных, так как я использую STI, и каждая модель будет иметь разные name
и description
.