Update series_name for alt styles to be null, with a fallback string

I considered this at first, but decided to keep it simple until it
turned out to matter. Oops, it already matters, lol!

I want the item search code to be able to easily tell if the series
name is real or a placeholder, so we can decide whether to build the
filter text in `fits:$series-$color-$species` form or
`fits:alt-style-$id` form.

So in this change, we keep it that `AltStyle#series_name` returns the
placeholder string if none is set, but callers can explicitly ask
whether it's a real series name or not. Will use this in our next
change!
This commit is contained in:
Emi Matchu 2024-02-27 15:48:28 -08:00
parent 9243193bc8
commit 18c7a34b8f
3 changed files with 22 additions and 2 deletions

View file

@ -17,6 +17,20 @@ class AltStyle < ApplicationRecord
species_human_name: species.human_name)
end
# If the series_name hasn't yet been set manually by support staff, show the
# string "<New?>" instead. But it won't be searchable by that string—that is,
# `fits:<New?>-faerie-draik` intentionally will not work, and the canonical
# filter name will be `fits:alt-style-IDNUMBER`, instead.
def series_name
self[:series_name] || "<New?>"
end
# You can use this to check whether `series_name` is returning the actual
# value or its placeholder value.
def has_real_series_name?
self[:series_name].present?
end
def adjective_name
"#{series_name} #{color.human_name}"
end

View file

@ -0,0 +1,6 @@
class ChangeDefaultForAltStylesSeriesName < ActiveRecord::Migration[7.1]
def change
change_column_null :alt_styles, :series_name, true
change_column_default :alt_styles, :series_name, from: "<New?>", to: nil
end
end

View file

@ -10,14 +10,14 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.1].define(version: 2024_02_27_231815) do
ActiveRecord::Schema[7.1].define(version: 2024_02_27_233743) do
create_table "alt_styles", charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t|
t.integer "species_id", null: false
t.integer "color_id", null: false
t.integer "body_id", null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "series_name", default: "<New?>", null: false
t.string "series_name"
t.index ["color_id"], name: "index_alt_styles_on_color_id"
t.index ["species_id"], name: "index_alt_styles_on_species_id"
end