Lors du développement d'applications avec Rails, essayer d'implémenter des formulaires inter-niveaux qui peuvent exister dans le monde réel dans une certaine mesure conduira inévitablement à l'existence de active_hash.
J'y suis aussi arrivé et j'ai pensé que c'était "pratique", mais au fur et à mesure que je procédais à divers travaux, la façon de penser quand il devrait être utilisé et quand il ne devrait pas être décidé petit à petit, je vais donc le laisser pour rappel. ..
Nous le faisons dans l'environnement suivant.
ruby 2.6.5 rails 6.0.3
De la conclusion, je me demande si la façon de penser suivante est correcte. ** ① À utiliser pour les données moins importantes ** ** ② Utilisé pour les données statiques ** ** ③ Utilisé pour les données qui n'ont pas une structure compliquée **
Dès la conclusion, il est écrit partout avec le sentiment que ce sont les deux ci-dessus, mais je n'étais pas au courant de (2) ou je n'ai pas pensé à (3) en premier lieu, j'ai donc appris en procédant au développement. C'est une forme qui a disparu. Les détails seront décrits plus tard.
Cet article et Cet article sont très faciles à comprendre. Grâce à vous, j'ai pu le présenter sans trop de problèmes. (Toujours, mes ancêtres ne s'énervent pas)
En utilisant gem active_hash, vous pouvez créer des données statiques qui peuvent être utilisées comme un enregistrement actif sans créer de table. (À propos, la dernière version de gem a moins de méthodes de description autorisées, alors soyez prudent lorsque vous l'introduisez.)
Les données préfectorales sont souvent utilisées à titre d'exemple. La description réelle est la suivante.
prefecture.rb
class Prefecture < ActiveHash::Base
self.data = [
{id: 1, name: 'Hokkaido'}, {id: 2, name: 'Préfecture d'Aomori'}, {id: 3, name: 'Préfecture d'Iwate'},
{id: 4, name: 'Préfecture de Miyagi'}, {id: 5, name: 'Akita'}, {id: 6, name: 'Préfecture de Yamagata'},
{id: 7, name: 'Préfecture de Fukushima'}, {id: 8, name: 'Préfecture d'Ibaraki'}, {id: 9, name: 'Préfecture de Tochigi'},
{id: 10, name: 'Préfecture de Gunma'}, {id: 11, name: 'Saitama'}, {id: 12, name: 'Préfecture de Chiba'},
{id: 13, name: 'Tokyo'}, {id: 14, name: 'Préfecture de Kanagawa'}, {id: 15, name: 'Préfecture de Niigata'},
{id: 16, name: 'Préfecture de Toyama'}, {id: 17, name: 'Préfecture d'Ishikawa'}, {id: 18, name: 'Préfecture de Fukui'},
{id: 19, name: 'Préfecture de Yamanashi'}, {id: 20, name: 'Préfecture de Nagano'}, {id: 21, name: 'Préfecture de Gifu'},
{id: 22, name: 'Préfecture de Shizuoka'}, {id: 23, name: 'Préfecture d'Aichi'}, {id: 24, name: 'Préfecture de Mie'},
{id: 25, name: 'Préfecture de Shiga'}, {id: 26, name: 'Kyoto'}, {id: 27, name: 'Préfecture d'Osaka'},
{id: 28, name: 'Préfecture de Hyogo'}, {id: 29, name: 'Préfecture de Nara'}, {id: 30, name: 'Préfecture de Wakayama'},
{id: 31, name: 'Préfecture de Tottori'}, {id: 32, name: 'Préfecture de Shimane'}, {id: 33, name: 'Préfecture d'Okayama'},
{id: 34, name: 'Préfecture d'Hiroshima'}, {id: 35, name: 'Préfecture de Yamaguchi'}, {id: 36, name: 'Préfecture de Tokushima'},
{id: 37, name: 'Préfecture de Kagawa'}, {id: 38, name: 'Préfecture d'Ehime'}, {id: 39, name: 'Préfecture de Kochi'},
{id: 40, name: 'Préfecture de Fukuoka'}, {id: 41, name: 'Préfecture de Saga'}, {id: 42, name: 'Préfecture de Nagasaki'},
{id: 43, name: 'Préfecture de Kumamoto'}, {id: 44, name: 'Préfecture d'Oita'}, {id: 45, name: 'Préfecture de Miyazaki'},
{id: 46, name: 'Préfecture de Kagoshima'}, {id: 47, name: 'Préfecture d'Okinawa'}
]
end
Créez simplement un fichier comme celui-ci dans le modèle. Très simple. id: et nom: sont les noms des colonnes du tableau. Après cela, vous pouvez facilement l'utiliser en écrivant simplement l'association dans la description de active_hash.
item.rb
class Item < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :prefecture
end
Cette fois, je voulais avoir un prefecture_id dans la table des éléments, je vais donc le décrire dans le modèle comme ci-dessus. Il n'est pas nécessaire de décrire l'association du côté du hachage actif. Vous pouvez maintenant l'utiliser de la même manière que si vous aviez créé un tableau. Facile et pratique.
Quand j'ai appris qu'il s'agissait de données statiques, j'étais au départ au courant des ** données préparées côté serveur ** sans augmenter le côté client.
Cependant, en avançant, j'ai pensé que cette reconnaissance était insuffisante. Plus précisément, même si les données sont préparées côté serveur, si elles augmentent régulièrement en raison de changements d'utilisation ou de changement de valeur plus tard ** On ne peut pas dire qu'elle est statique. ,Quand**
Comme vous pouvez le voir à partir de la méthode d'écriture ci-dessus, chaque valeur du hachage actif est solide dans le fichier, donc la mise à jour est ennuyeuse et risquée (travail analogique).
Dans cet esprit, j'ai enfin compris la raison pour laquelle les préfectures apparaissent dans les exemples d'utilisation de active_hash. Le nombre de préfectures n'augmente pas en raison de la commodité du côté client ou du côté serveur.
Une section m'est venue à l'esprit lorsque j'ai appris cela pour la première fois. Je voulais avoir une association plusieurs-à-plusieurs, mais c'était difficile avec le hachage actif, donc c'était une reconnaissance qui n'était pas une erreur.
De plus, il semble que le hachage actif ne puisse pas être utilisé car les ** tables avec une structure hiérarchique ** sont également compliquées. Il y avait un manque de reconnaissance.
Au fur et à mesure que je procédais au développement, j'ai eu l'impression que le sens du mot «données statiques» ne pouvait pas être saisi avec précision. Après tout, vous ne pouvez pas comprendre tant que vous n’avez pas essayé les bases. Je n'ai qu'à bouger ma main.
Recommended Posts