Cadre d'application Web exceptionnellement productif, Ruby on Rails est optimisé pour le plaisir des programmeurs et un résultat durable. Il privilégie la convention à la configuration et vous permet ainsi d'écrire du beau code sans trop vous soucier de la conformation.
Il existe une demande croissante pour Rubis sur Rails en raison de sa rapidité et de son agilité dans la création d'applications avec une productivité améliorée et des délais de livraison réduits.
Les associations d'enregistrements actifs sont l'une des fonctionnalités les plus importantes de Rails. L'association polymorphe fait partie de ces associations. Avec l'association polymorphe, un modèle peut appartenir à plusieurs autres modèles, sur une seule association.
Pourquoi avons-nous besoin d’associations entre modèles ? Parce qu'ils rendent les opérations courantes plus simples et plus faciles dans votre code. Avec les associations Active Record, nous pouvons rationaliser ces opérations – et d’autres – en indiquant de manière déclarative à Rails qu’il existe une connexion entre les deux modèles.
Dans Rails, un association est une connexion entre deux modèles Active Record. Les associations sont implémentées à l'aide d'appels de style macro, afin que vous puissiez ajouter des fonctionnalités de manière déclarative à vos modèles. Par exemple, en déclarant qu'un modèle appartient à un autre, vous demandez à Rails de conserver les informations de clé primaire et de clé étrangère entre les instances des deux modèles, et vous obtenez également un certain nombre de méthodes utilitaires ajoutées à votre modèle. Rails prend en charge six types d'associations :
Voyons comment le mettre en œuvre. Nous devrons d’abord créer un modèle de document.
modèle Rails G Nom du document : chaîne wpl_article_id : entier
wpl_article_type: chaîne
Document de classe < ActiveRecord :: Base
appartient_to :wpl_article, :polymorphic => true
fin
L'interface:
En utilisant une association polymorphe, nous devons définir un seul groupe d'appartenances_to et ajouter une paire de colonnes associées à la table de base de données sous-jacente. À partir de ce moment, n'importe quelle classe de notre système peut avoir des documents attachés (ce qui en ferait wpl_article) sans avoir besoin de modifier le schéma de la base de données ou le modèle de document lui-même.
Il n'y a pas de classe (ou module) wpl_article dans notre application. Nous avons nommé l'association :wpl_article car elle décrit précisément l'interface des objets qui seront ainsi associés. Le nom
:wpl_article réapparaîtra de l'autre côté de l'association :
logiciel de classe < ActiveRecord :: Base
has_one :document, :as => :wpl_article
fin
classe Matériel < ActiveRecord :: Base
has_one :document, :as => :wpl_article
fin
recherche de classe < ActiveRecord :: Base
has_one :document, :as => :wpl_article
fin
Les colonnes de la base de données : (association_name)_type – Stocke le type pour
associations polymorphes.
classe CreateDocuments < ActiveRecord :: Migration
changement définitif
create_table :les documents font |t|
t.string : nom
t.integer :wpl_article_id # comme nous l'avons mentionné « appartient_à
:wpl_article, :polymorphic => true” dans le modèle de document. C'est un
convention du schéma selon laquelle association_name_type et
association_name_id sera donc « wpl_article ».
t.string :wpl_article_type
fin
fin
fin
Les logiciels, le matériel et la recherche ont un document via une association polymorphe wpl_article Ici, nous pouvons voir comment modèle. Le document est associé à trois modèles de logiciels, de matériel et de recherche en association unique via wpl_article qui aide à réaliser l'association.
Chargement de l'environnement de développement (Rails 4.1.1)
2.0.0-p247 :001 > document = Document.create(nom : 'Worldcup)
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
«Coupe du monde»>
2.0.0-p247 :002 > logiciel = Software.create(nom : 'cricinfo.com')
=> #
2.0.0-p247 :003 > document.update_attribute(:wpl_article, logiciel)
=> # <Document id: 1, wpl_article_type: ‘Software’, wpl_article_id: 1,
nom : « Coupe du Monde »>
=> vrai
2.0.0-p247 :004 > Logiciel.dernier.document.nom
=> « Coupe du Monde »
2.0.0-p247 :005 >Document.dernier
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
«Coupe du monde»>
2.0.0-p247 :006 >Document.last.wpl_article
il récupérera le reçu en fonction de wpl_article_id et wpl_article_type
Railscarma fournit des solutions Ruby on Rails de bout en bout depuis le développement, le déploiement, la gestion, la surveillance et la prise en charge de vos applications.
Travaillant sur l'application Ruby dès ses débuts, RailsCarma vous fait bénéficier de son expertise pionnière pour vous aider à obtenir des solutions métiers rapides et simplifiées.
En savoir plus :
- Comprendre le plugin Asset Pipeline
- Les bases de la création et de l'utilisation de modules dans Rails
- Un moyen simple d'augmenter les performances de votre application Rails
- Mise à l'échelle des applications avec plusieurs connexions à des bases de données