[RUBY] Rails Active_storage -Simplifier l'enregistrement des images-
      
      
        
        
        
        
  Qu'est-ce que le stockage actif  h1>
 Active Storage est une fonction de téléchargement de fichiers. Avec cela, vous pouvez facilement créer une fonction de publication d'image, etc. avec un formulaire. Vous pouvez facilement télécharger des fichiers vers des services de stockage cloud (Amazon S3, Google Cloud Storage, Microsoft Azure Storage, etc.).
  Méthode d'introduction  h2>
- 
 Créer une table avec Active_storage
 
% rails active_storage:install
Installez Active_storage et générez les fichiers associés (migration, etc.)
%rails db:migrate
Si vous cochez Seaquel Pro et que le tableau suivant est généré, il réussit jusqu'à présent.
Ceci complète le "conteneur" pour stocker les images.
  Description du modèle: joindre une image  h2>
 Les informations d'image telles que «joindre une image à un message» ou «joindre une image à des informations sur le produit» sont souvent liées à d'autres modèles. Une idée courante ici est de créer un modèle d'image et de former une association car il existe une table d'images. En fait, il n'est pas nécessaire de créer un modèle distinct pour la table créée par active_storage. Ajoutez "has_one_attached: file name" au modèle dans lequel vous souhaitez participer et l'association sera terminée.
 Cette fois, nous supposerons que vous formerez une association avec le message.
models/message.rb
class Message < ApplicationRecord
  ~Les descriptions telles que d'autres associations sont omises~
  has_one_attached :image
 
end
Il peut être plus facile d'imaginer dire "j'ai fait une pseudo colonne d'image" plutôt qu'une association.
  Description du contrôleur: paramètres forts  h2>
En regardant la table des messages de seaquel_pro, la colonne image n'existe pas

Cependant, en raison de has_one_attached décrit dans le modèle, il existe une "pseudo colonne d'image" dans la table des messages.
- Les informations d'image sont enregistrées dans la table générée par rails active_storage: install.
 
À partir de là, les informations sur l'image peuvent être ignorées dans les paramètres de messages_controller.rb.
controllers/messages_controller.rb
class MessagesController < ApplicationController
  def new
    @message = Message.new
  end
  def create
   @mesage = Message.create(message_params)
  end
  private
  def message_params
      params.require(:message).permit(:content, :image).merge(user_id: current_user.id)
  end
end
  Afficher la description: Envoyer l'image  h2>
 Pour cela, utilisez l'élément de formulaire file_field comme d'habitude.
<%= form_with model: @message, local: true  do |form| %>
  <%= form.text_area :content %><br>
  <%= form.file_field :image %><br>
  <%= form.submit %>
<% end %>
  Voir la description: Afficher l'image  h2>
 Vous pouvez également utiliser la balise img, mais utilisez image_tag, une méthode d'aide pour les rails, pour simplifier la description.
<% if @message.image.attached? %>
  <%= image_tag @message.image %>
<% end %>
c'est tout! !!