5.11-12 implemented migration

This commit is contained in:
Aaro Koivukangas
2023-11-29 18:33:49 +02:00
parent 03232ae423
commit 10fee9e695
6 changed files with 69 additions and 3 deletions
+2
View File
@@ -0,0 +1,2 @@
class StylesController < ApplicationController
end
+2
View File
@@ -0,0 +1,2 @@
module StylesHelper
end
+1 -1
View File
@@ -6,7 +6,7 @@ class Beer < ApplicationRecord
has_many :users, through: :ratings
validates :name, presence: true
validates :style, presence: true
validates :style_id, presence: true
def to_s
"#{name}, #{(Brewery.find_by_id brewery_id).name}"
+2
View File
@@ -0,0 +1,2 @@
class Style < ApplicationRecord
end
@@ -0,0 +1,52 @@
class CreateStyles < ActiveRecord::Migration[7.0]
def self.up
create_table :styles do |t|
t.index :id
t.text :name
t.timestamps
end
change_table :beers do |t|
t.rename :style, :old_style
t.references :style
end
Beer.all.each do |beer|
style = Style.find_by name: beer.old_style
if style.nil?
Style.create name: beer.old_style
end
end
Beer.all.each do |beer|
style = Style.find_by name: beer.old_style
if style.nil?
Beer.update beer.id, { :style_id => 1 }
else
Beer.update beer.id, { :style_id => style.id }
end
end
remove_column :beers, :old_style
end
def self.down
add_column :beers, :style, :text
Beer.all.each do |beer|
style = Style.find_by id: beer.style_id
if style.nil?
Beer.update beer.id, { :style => "IPA" }
else
Beer.update beer.id, { :style => style.name }
end
end
remove_column :beers, :style_id
remove_column :beers, :old_style
drop_table :styles
end
end
Generated
+10 -2
View File
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_08_10_180821) do
ActiveRecord::Schema[7.0].define(version: 2023_11_20_133953) do
create_table "beerclubs", force: :cascade do |t|
t.string "name"
t.integer "founded"
@@ -21,10 +21,11 @@ ActiveRecord::Schema[7.0].define(version: 2023_08_10_180821) do
create_table "beers", force: :cascade do |t|
t.string "name"
t.string "style"
t.integer "brewery_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "style_id"
t.index ["style_id"], name: "index_beers_on_style_id"
end
create_table "breweries", force: :cascade do |t|
@@ -49,6 +50,13 @@ ActiveRecord::Schema[7.0].define(version: 2023_08_10_180821) do
t.integer "user_id"
end
create_table "styles", force: :cascade do |t|
t.text "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["id"], name: "index_styles_on_id"
end
create_table "users", force: :cascade do |t|
t.string "username"
t.datetime "created_at", null: false