add_column(table_name, column_name, type, **options)
class AddViewsToRestaurantsMenusDishes < ActiveRecord::Migration[6.0]
def change
add_column :restaurants, :views, :integer, default: 0
add_column :menus, :views, :integer, default: 0
add_column :dishes, :views, :integer, default: 0
end
end
Ни один из методов в ActiveRecord::ConnectionAdapters::SchemaStatements
или ActiveRecord::ConnectionAdapters::TableDefinition
, составляющих целые миграции DSL, не принимает модели в качестве аргументов - все таблицы полностью.
Это предполагает, что ваши таблицы имеют условные имена. Если вы действительно хотите сделать то же самое из списка классов моделей, вы можете сделать:
class AddViewsToRestaurantsMenusDishes < ActiveRecord::Migration[6.0]
def change
[Restaurant, Menu, Dish].each do |model|
add_column model.table_name, :views, :integer, default: 0
end
end
end
Но для миграций обычно хорошей идеей является KISS. Тем более, что они не должны оставаться на протяжении всего срока службы вашего проекта.