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.
Why do we need associations between models? Because they make common operations simpler and easier in your code. With Active Record associations, we can streamline these – and other – operations by declaratively telling Rails that there is a connection between the two models.
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.
There isn’t a wpl_article class (or module) in our application. We named the association :wpl_article because it accurately describes the interface of objects that will be associated in this way. The name
: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
The Database Columns: (association_name)_type – Stores the type for
associations polymorphes.
classe CreateDocuments < ActiveRecord :: Migration
changement définitif
create_table :les documents font |t|
t.string : nom
t.integer :wpl_article_id # as we have mentioned “belongs_to
:wpl_article, :polymorphic => true” in document model . This is a
convention du schéma selon laquelle association_name_type et
association_name_id will be accordingly “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(name: ‘Worldcup)
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
“Worldcup”>
2.0.0-p247 :002 > software = Software.create(name: ‘cricinfo.com’)
=> #<Software id: 1, name: “cricinfo.com”>
2.0.0-p247 :003 > document.update_attribute(:wpl_article, logiciel)
=> #<Document id: 1, wpl_article_type: ‘Software’, wpl_article_id: 1,
name: “Worldcup”>
=> vrai
2.0.0-p247 :004 > Logiciel.dernier.document.nom
=> “Worldcup”
2.0.0-p247 :005 >Document.dernier
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
“Worldcup”>
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