2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/generators/journeybook/install/templates/add_context_fields_to_journeybook_sites.rb', line 2
def change
remove_index :journeybook_sites, :host if index_exists?(:journeybook_sites, :host, unique: true)
add_column :journeybook_sites, :key, :string
add_column :journeybook_sites, :path_prefix, :string, null: false, default: "/"
add_column :journeybook_sites, :layout, :string
reversible do |dir|
dir.up do
say_with_time "Backfilling Journeybook site keys" do
site_class = Class.new(ActiveRecord::Base) do
self.table_name = "journeybook_sites"
end
used_keys = {}
site_class.order(:id).find_each do |site|
base_key = site.name.to_s.parameterize(separator: "_").presence || "site"
key = base_key
suffix = 2
while used_keys.key?(key)
key = "#{base_key}_#{suffix}"
suffix += 1
end
used_keys[key] = true
site.update_columns(key: key)
end
end
end
end
add_index :journeybook_sites, :key, unique: true
add_index :journeybook_sites, :host
add_index :journeybook_sites, %i[host path_prefix], unique: true
end
|