Bei der Entwicklung von Anwendungen mit Rails führt der Versuch, Interlevel-Formulare zu implementieren, die in der realen Welt zu einem gewissen Grad existieren können, zwangsläufig zur Existenz von active_hash.
Ich kam auch dazu und dachte, dass es "bequem" sei, aber als ich mit verschiedenen Arbeiten fortfuhr, überlegte ich, wann es verwendet werden sollte und wann es nicht nach und nach entschieden werden sollte, also werde ich es als Erinnerung belassen ..
Wir machen das in der folgenden Umgebung.
ruby 2.6.5 rails 6.0.3
Abschließend frage ich mich, ob die folgende Denkweise in Ordnung ist. ** ① Für weniger wichtige Daten verwenden ** ** ② Wird für statische Daten verwendet ** ** ③ Wird für Daten verwendet, die keine komplizierte Struktur haben **
Aus der Schlussfolgerung geht hervor, dass es überall mit dem Gefühl geschrieben ist, dass es die beiden oben genannten sind, aber ich war mir (2) nicht bewusst oder dachte überhaupt nicht an (3), also lernte ich, während ich mit der Entwicklung fortfuhr. Es ist eine Form, die gegangen ist. Details werden später beschrieben.
Dieser Artikel und Dieser Artikel sind sehr einfach zu verstehen. Dank dir konnte ich es ohne große Probleme einführen. (Meine Vorfahren sind immer nicht verärgert)
Mit gem active_hash können Sie statische Daten erstellen, die wie ein aktiver Datensatz verwendet werden können, ohne eine Tabelle zu erstellen. (Übrigens hat die neueste Version von gem weniger zulässige Beschreibungsmethoden, seien Sie also vorsichtig, wenn Sie sie einführen.)
Präfekturdaten werden häufig als Beispiel verwendet. Die tatsächliche Beschreibung lautet wie folgt.
prefecture.rb
class Prefecture < ActiveHash::Base
self.data = [
{id: 1, name: 'Hokkaido'}, {id: 2, name: 'Präfektur Aomori'}, {id: 3, name: 'Präfektur Iwate'},
{id: 4, name: 'Präfektur Miyagi'}, {id: 5, name: 'Akita'}, {id: 6, name: 'Präfektur Yamagata'},
{id: 7, name: 'Präfektur Fukushima'}, {id: 8, name: 'Präfektur Ibaraki'}, {id: 9, name: 'Präfektur Tochigi'},
{id: 10, name: 'Präfektur Gunma'}, {id: 11, name: 'Saitama'}, {id: 12, name: 'Präfektur Chiba'},
{id: 13, name: 'Tokio'}, {id: 14, name: 'Präfektur Kanagawa'}, {id: 15, name: 'Präfektur Niigata'},
{id: 16, name: 'Präfektur Toyama'}, {id: 17, name: 'Präfektur Ishikawa'}, {id: 18, name: 'Präfektur Fukui'},
{id: 19, name: 'Präfektur Yamanashi'}, {id: 20, name: 'Präfektur Nagano'}, {id: 21, name: 'Präfektur Gifu'},
{id: 22, name: 'Präfektur Shizuoka'}, {id: 23, name: 'Präfektur Aichi'}, {id: 24, name: 'Präfektur Mie'},
{id: 25, name: 'Präfektur Shiga'}, {id: 26, name: 'Kyoto'}, {id: 27, name: 'Präfektur Osaka'},
{id: 28, name: 'Präfektur Hyogo'}, {id: 29, name: 'Präfektur Nara'}, {id: 30, name: 'Präfektur Wakayama'},
{id: 31, name: 'Präfektur Tottori'}, {id: 32, name: 'Präfektur Shimane'}, {id: 33, name: 'Präfektur Okayama'},
{id: 34, name: 'Präfektur Hiroshima'}, {id: 35, name: 'Präfektur Yamaguchi'}, {id: 36, name: 'Präfektur Tokushima'},
{id: 37, name: 'Präfektur Kagawa'}, {id: 38, name: 'Präfektur Ehime'}, {id: 39, name: 'Präfektur Kochi'},
{id: 40, name: 'Präfektur Fukuoka'}, {id: 41, name: 'Präfektur Saga'}, {id: 42, name: 'Präfektur Nagasaki'},
{id: 43, name: 'Präfektur Kumamoto'}, {id: 44, name: 'Präfektur Oita'}, {id: 45, name: 'Präfektur Miyazaki'},
{id: 46, name: 'Präfektur Kagoshima'}, {id: 47, name: 'Präfektur Okinawa'}
]
end
Erstellen Sie einfach eine solche Datei im Modell. Sehr einfach. id: und name: sind die Spaltennamen in der Tabelle. Danach können Sie es einfach verwenden, indem Sie die Zuordnung in die Beschreibung für active_hash schreiben.
item.rb
class Item < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :prefecture
end
Dieses Mal wollte ich prefecture_id in der Artikeltabelle haben, daher werde ich es im Modell wie oben beschreiben. Es ist nicht erforderlich, die Zuordnung auf der aktiven Hash-Seite zu beschreiben. Jetzt können Sie es genauso verwenden, als hätten Sie eine Tabelle erstellt. Einfach und bequem.
Als ich hörte, dass es sich um statische Daten handelte, waren mir zunächst die auf der Serverseite vorbereiteten Daten bekannt, ohne die Clientseite zu vergrößern.
Als ich fortfuhr, dachte ich jedoch, dass diese Anerkennung unzureichend war. Selbst wenn die Daten auf der Serverseite vorbereitet werden, steigen sie aufgrund von Nutzungsänderungen oder späteren Wertänderungen stetig an. ** Es kann nicht gesagt werden, dass sie statisch sind. ,Wann**
Wie Sie der obigen Schreibmethode entnehmen können, ist jeder Wert des aktiven Hashs in der Datei fest, sodass das Aktualisieren ärgerlich und riskant ist (analoge Arbeit).
In diesem Sinne habe ich endlich verstanden, warum Präfekturen in den Verwendungsbeispielen von active_hash vorkommen. Die Anzahl der Präfekturen nimmt aufgrund der Bequemlichkeit der Client- oder Serverseite nicht zu.
Es gab einen Abschnitt, der mir in den Sinn kam, als ich zum ersten Mal davon erfuhr. Ich wollte eine Viele-zu-Viele-Assoziation haben, aber es war schwierig mit aktivem Hashing, also dachte ich, dass es kein Fehler war.
Es scheint auch, dass aktiver Hash nicht verwendet werden kann, da ** Tabellen mit einer hierarchischen Struktur ** ebenfalls kompliziert sind. Es mangelte an Anerkennung.
Als ich mit der Entwicklung fortfuhr, hatte ich den Eindruck, dass die Bedeutung des Wortes "statische Daten" nicht genau erfasst werden konnte. Schließlich können Sie nicht verstehen, bis Sie die Grundlagen ausprobieren. Ich muss nur meine Hand bewegen.
Recommended Posts