Associations polymorphes avec enregistrement actif

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 : 

Prenez contact avec nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

French
English
English
Japanese
German
French
Spanish

WhatsApp nous

Quitter la version mobile