[RUBY] [Rails] Différentes manières d'écrire dans des fichiers de départ

environnement

Ruby 2.6.5 Rails 6.0.3

Comment écrire ceci et cela

① Créez un seul (basique)

seed.rb


User.create!(
   email: "[email protected]",
   name: "user1",
   passowrd: "password"
)

Créer! Action pour le modèle pour lequel vous souhaitez créer un enregistrement. Je vais donner la valeur de chaque colonne.

② Créez plusieurs données de démonstration

seed.rb


 users = User.create!([
  {nickname: "guest", email: "[email protected]", password: "guest1234"},
  {nickname: "guest2", email: "[email protected]", password: "guest5678"}, 
])

Préparez un tableau. Il peut être créé en passant des données d'enregistrement sous la forme d'un hachage à chaque élément du tableau.

③ Créer plusieurs données de démonstration (traitement répété)

seed.rb


20.times do |n|
  User.create!(
  name: "guest#{n+1}",
  email: "guest#{n+1}@guest.com",
  password: "guest#{n+1}0000",
 )
end

Exécutez plusieurs fois l'action create! À l'aide de la méthode times. Implémentez différentes valeurs pour chaque enregistrement en incluant n dans la valeur afin que les colonnes avec unicité ne se chevauchent pas.

④ Combiner des séquences

seed.rb


stations = ["Tokyo",
  "Yurakucho",
  "Shimbashi",
  "Ville de Hamamatsu",
  "Tamachi",
  "Porte de Takanawa",
  "Shinagawa",
  "Osaki" ,
  "Gotanda",
  "Meguro",
  "Ebisu",
  "Shibuya",
  "Harajuku",
  "Yoyogi",
  "Shinjuku",
  "Shin-Okubo",
  "Takada Baba",
  "Mejiro",
  "Ikebukuro",
  "Otsuka",
  "Negamo",
  "Komagome",
  "Tabata",
  "Nishi Nippori",
  "Nippori",
  "Uguisudani" ,
  "Ueno",
  "Okachimachi",
  "Akihabara",
  "Kanda"]

stations.length.times do |i|
  Station.create!(
    name: stations[i]
  )
end

Après avoir préparé le tableau, répétez autant de fois qu'il y en a et donnez la valeur du tableau à la colonne. (Je pense que je devrais pouvoir aller avec chacun, mais pour une raison quelconque, cela n'a pas fonctionné et je l'ai traité avec le temps) J'ai utilisé le tableau parce que je voulais réutiliser cette valeur pour une autre colonne. (Plus précisément, lorsque j'ai créé les données de démonstration du restaurant après cela, je voulais inclure le nom de la station dans le nom du magasin, j'ai donc choisi cette méthode)

⑤ Créez un enregistrement comprenant l'imbrication d'attributs

seed.rb


Item.create!(
  name: "canapé",
  produce: "Tout neuf",
  price: 8000,
  images_attributes: [{image: File.open('./app/assets/images/index_item01.png',)}]
  )

Si la table Item imbrique la table Image et a une relation has_many. Étant donné que images_attributes a plusieurs données d'enregistrement, créez un tableau et indiquez les données d'enregistrement de la table Image par hachage.

⑥ Diverses combinaisons jusqu'à présent

seed.rb


10.times do |i|
  Shop.create!(
    name: "Magasin de poisson frais#{stations[i]}boutique",
    address: addresses[i],
    capacity: 40,
    mainimage: File.open('./app/assets/images/shops/shop1_1.jpg'),
    maincontent: "Nous vous attendons pour préparer les fruits de mer directement depuis la zone de production!",
    likepoints: 0,
    station_ids: [i+1,i+2],
    introduces_attributes: [
      {subcontent: "Vous pouvez profiter de votre repas dans un intérieur calme.",
        number: 1,
        subimage: File.open('./app/assets/images/shops/shop1_2.jpg')},
      {subcontent:"Nous vous recommandons le plateau de fruits de mer!",
        number: 2,
        subimage: File.open('./app/assets/images/shops/shop1_3.jpg')},
      {subcontent: "Un commis bavard vous attend!",
        number: 3,
        subimage: File.open('./app/assets/images/shops/shop1_4.jpg')}
    ]
  )
end

Plusieurs données d'atelier sont créées à l'aide du tableau appelé stations. La table shop imbrique la table introduces, et je veux passer plusieurs enregistrements à la table introduces, donc je passe le tableau sous la forme d'un hachage. Ce n'est pas si compliqué, étonnamment. (Je ne connais pas la cause, mais cela n'a pas fonctionné au début, et quand j'ai ajusté l'indentation, quelque chose s'est passé. Qu'est-ce que c'était?)

Résumé

Quand j'ai étudié comment les données étaient envoyées dans le formulaire, j'ai bien compris, donc je n'ai pas eu à trop m'inquiéter de la description dans le fichier de départ. En lisant diverses choses, j'ai eu l'impression que la phrase «le tableau est retiré comme un hachage et le hachage est retiré comme un tableau pour sauvegarder les données» qui apparaissait dans le texte officiel ou quelque chose était très facile à comprendre (rappelez-vous).

Je vais le laisser comme un rappel.

Recommended Posts

[Rails] Différentes manières d'écrire dans des fichiers de départ
Comment écrire des graines de Rails
[Rails] Deux façons d'écrire form_with
[Rails] Différentes façons de supprimer des données
Comment écrire des rails
Comment écrire une recherche de comparaison de dates dans Rails
[Rails] Comment faire des graines
Comment écrire le routage Rails
[Rails 5] lien japanMap Comment écrire des paramètres dans le fichier js.erb
[Rails] Comment écrire user_id (clé externe) dans un paramètre fort
[Rails] Comment écrire la gestion des exceptions?
Comment installer jQuery dans Rails 6
Comment installer Swiper in Rails
Implémentation n ° 8 pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Comment implémenter la fonctionnalité de recherche dans Rails
Comment changer le nom de l'application dans les rails
Comment insérer une vidéo dans Rails
Java-Comment comparer des fichiers image en binaire
[Java] Comment sortir et écrire des fichiers!
Comment utiliser MySQL dans le didacticiel Rails
Convertir des fichiers SVG en fichiers PNG en Java
[rails] Comment configurer le routage dans les ressources
Pour écrire des données de réponse directement dans Spring
Écrivons 5 façons d'implémenter Java Singleton et divers avantages et inconvénients
Comment implémenter la fonctionnalité de classement dans Rails
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Rails: comment bien écrire une tâche de râteau
Convertir en balise dans la chaîne d'URL avec Rails
Deux façons de démarrer un thread en Java + @
[Java FX] Comment écrire des autorisations Eclipse dans build.gradle
[Rails] Comment écrire lors de la création d'une sous-requête
J'ai essayé d'organiser la session en Rails
3 façons d'importer des bibliothèques dans Android Studio
[Rails] Comment utiliser les boîtes de sélection dans Ransack
JUnit 5: Comment écrire des cas de test dans enum
Comment traduire Rails en japonais en général
Comment mettre à jour un fichier prédéfini dans un conteneur Docker
Comment séparer .scss par contrôleur dans Rails
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Comment utiliser JQuery dans Rails 6 js.erb
[Rails] Ajouté dans le modèle: nom d'utilisateur non ajouté à la base de données
Comment écrire Java String # getBytes dans Kotlin?
Rails "Comment supprimer les fichiers de migration NO FILE"
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment vérifier les commandes Rails dans le terminal
Notes sur la façon de rédiger des commentaires en anglais