0

Je souhaite obtenir une association has_many avec un nombre x d'enregistrements, et les enregistrements seront nommés.Rails nommé has_many avec une limite

Expliquons cela mieux. Dans un previous question j'ai demandé comment faire une zone de texte avec un langage de balisage sélectionnable et nous avons conclu que j'avais besoin d'un modèle séparé, Field qui avait les champs multiples dont j'avais besoin (language, original et rendered).

Maintenant, je veux être en mesure de faire un modèle, disons User, qui avait deux de ces champs. Par exemple: about_me et biography. Comment créer ces champs chaque fois que je crée l'utilisateur, les modifier lorsque je modifie l'utilisateur et les détruire lorsque je modifie l'utilisateur? Et comment les afficherais-je simplement en écrivant: User.about_me et User.biography?

Merci d'avance pour la réponse.

Répondre

1

La solution de David crée le modèle de joint.

Ensuite, vous devez inclure la forme du profil dans le formulaire utilisateur. Vous devrez utiliser la méthode accepts_nested_attributes_for dans le modèle Utilisateur.

Pour détruire le profil lorsque l'utilisateur est supprimé, ajoutez dependent => :destroy à la relation entre les 2 modèles.

1

Vous devrez utiliser des rappels (http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html). Par exemple, dans votre modèle User, vous avez un rappel after_create qui créera les champs requis. Par exemple, dans votre modèle User.

De même, avez-vous un callback after_save qui vérifie user.changed? et si c'est différent, mettez à jour les champs.