1. Conclusion </ b>
2. Qu'est-ce qu'un objet Form? </ B>
3. Comment utiliser </ b>
4. Ce que j'ai appris d'ici </ b>
Utilisez objet formulaire </ b>!
C'est un moyen d'enregistrer sur plusieurs tables à la fois! Normalement, vous devez créer un fichier de migration de contrôleur et de modèle pour la table que vous souhaitez enregistrer. Dans ce cas, vous pouvez facilement le faire en créant un seul fichier avec le modèle!
❶ Créez un dossier dédié à l'objet de formulaire dans l'application et un fichier dedans. Et écrivez comme suit. Cette fois, je veux refléter les informations et l'adresse achetées dans la base de données, donc j'utiliserai sellitem_address!
app/forms/sell_item_address.rb
class SellitemAddress
 include ActiveModel::Model
 attr_accessor :postal_code, :shipping_orig_id, :city, :address_other, :building_name, 
               :telephone_num, :sell_item_id, :user_id, :buy_item_id
end
: user_id est le nouvel utilisateur enregistré, : buy_item_id est l'article à vendre.
include En décrivant ActiveModel :: Model et en l'incluant, vous pouvez le traiter comme un modèle et décrire la validation ici!
attr_accessor est une méthode qui vous permet de changer la description à l'intérieur d'une méthode lorsqu'elle est en dehors de la méthode! En d'autres termes, il peut être traité comme une variable d'instance, et le getter et le setter sont traités en interne!
❷ Saisissez les informations relatives au modèle que vous souhaitez utiliser.
app/forms/sellitem_address.rb
 def save
    sell_item = SellItem.create(user_id: user_id, buy_item_id: buy_item_id)
    Address.create(postal_code: postal_code, shipping_orig_id: shipping_orig_id, city: city, address_other: address_other, building_name: building_name,telephone_num: telephone_num, sell_item_id: sell_item.id )
  end
En faisant cela, nous avons défini les colonnes qui peuvent être enregistrées dans la base de données! user_id buy_item_id est J'ai déjà défini l'identifiant de l'utilisateur et l'identifiant de buy_item, je veux donc extraire chaque identifiant tel quel!
❸ Réglez pour indiquer au contrôleur d'enregistrer les informations saisies dans la vue dans le DB.
sell_items_controller
def create
    @sell_item = SellitemAddress.new(sell_item_params)
    if @sell_item.save
      return redirect_to root_path
    else
      render 'sell_items/index'
    end
  private
  def sell_item_params
    params.permit(:postal_code, :shipping_orig_id, :city, :address_other, :building_name, :telephone_num, :user_id, :buy_item_id).merge(user_id: current_user.id)
  end
 end
Dans la méthode sell_item_params, les informations définies dans le modèle sont décrites et résumées sous la forme sell_item_params lors de leur enregistrement. Ceci est très utile car il déterminera dans quelle table chaque colonne est stockée! Le nombre de descriptions à lire étant réduit, il est clair sans imposer une charge à l'opération!
À l'origine, j'ai essayé de créer une table pour stocker le contrôleur, le modèle et le fichier de migration, et de le lier à la vue. De plus, il est nécessaire d'indiquer à chaque contrôleur dans chaque partie d'entrée s'il doit coopérer avec chaque contrôleur. Il y a de fortes chances qu'une erreur se produise même dans la partie extensible. Cette méthode améliore la maintenabilité et la lisibilité, et n'impose pas de charge sur l'opération plutôt que de donner des instructions à chaque contrôleur!
Recommended Posts