discourse/db/fixtures/008_directory_columns.rb
David Taylor e01d1e9763
DEV: Move automatic directory_columns rows from migration to seed fixture (#39970)
Previously, `20210527131318_create_directory_columns.rb` both created
the table and inserted the seven default automatic columns, mixing
schema and data in a single migration.

This change moves the rows to `db/fixtures/008_directory_columns.rb`,
gated by a hidden `directory_columns_seeded` site setting so admin
customizations (renamed, reordered, or disabled columns) survive
subsequent `db:seed` runs. A companion
`20260513101242_mark_existing_sites_directory_columns_seeded.rb` flips
the flag on existing sites so the seed bails immediately on the upgrade
deploy.

Extracted from https://github.com/discourse/discourse/pull/39788.
2026-05-13 12:12:56 +01:00

24 lines
764 B
Ruby
Vendored

# frozen_string_literal: true
return if SiteSetting.directory_columns_seeded
[
{ name: "likes_received", position: 1, icon: "heart" },
{ name: "likes_given", position: 2, icon: "heart" },
{ name: "topic_count", position: 3, icon: nil },
{ name: "post_count", position: 4, icon: nil },
{ name: "topics_entered", position: 5, icon: nil },
{ name: "posts_read", position: 6, icon: nil },
{ name: "days_visited", position: 7, icon: nil },
].each do |column|
DirectoryColumn.seed(:name) do |c|
c.name = column[:name]
c.automatic_position = column[:position]
c.position = column[:position]
c.icon = column[:icon]
c.enabled = true
c.type = DirectoryColumn.types[:automatic]
end
end
SiteSetting.directory_columns_seeded = true