Polymorphe Assoziationen mit aktivem Datensatz

Ruby on Rails ist ein außergewöhnlich produktives Webanwendungs-Framework, das für Programmiererfreude und nachhaltige Ergebnisse optimiert ist. Es bevorzugt Konventionen gegenüber Konfigurationen und ermöglicht es Ihnen daher, schönen Code zu schreiben, ohne sich zu viele Gedanken über die Konformation zu machen.

Es besteht eine steigende Nachfrage nach Ruby auf Schienen aufgrund seiner Geschwindigkeit und Agilität bei der Erstellung von Anwendungen mit verbesserter Produktivität und kürzerer Lieferzeit.

Active Record Associations sind eine der wichtigsten Funktionen von Rails. Zu diesen Assoziationen gehört auch die polymorphe Assoziation. Bei der polymorphen Assoziation kann ein Modell zu mehr als einem anderen Modell in einer einzigen Assoziation gehören.

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.

In Rails, einem Verband ist eine Verbindung zwischen zwei Active Record-Modellen. Assoziationen werden mithilfe von Aufrufen im Makrostil implementiert, sodass Sie Ihren Modellen deklarativ Funktionen hinzufügen können. Indem Sie beispielsweise deklarieren, dass ein Modell zu einem anderen gehört, weisen Sie Rails an, Primärschlüssel-Fremdschlüssel-Informationen zwischen Instanzen der beiden Modelle zu verwalten, und Sie erhalten außerdem eine Reihe von Hilfsmethoden, die Ihrem Modell hinzugefügt werden. Rails unterstützt sechs Arten von Assoziationen:

Mal sehen, wie man es umsetzt. Zuerst müssen wir ein Dokumentmodell erstellen.

Schienen-G-Modell Dokumentname:string wpl_article_id:integer

wpl_article_type:string

Klasse Document < ActiveRecord::Base

gehört_zu :wpl_article, :polymorphic => true

Ende

Die Schnittstelle:

Bei Verwendung einer polymorphen Assoziation müssen wir nur ein einziges „gehört_to“ definieren und ein Paar verwandter Spalten zur zugrunde liegenden Datenbanktabelle hinzufügen. Von diesem Moment an können an jede Klasse in unserem System Dokumente angehängt werden (was sie zu „wpl_article“ machen würde), ohne dass das Datenbankschema oder das Dokumentmodell selbst geändert werden muss.

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 wird auf der anderen Seite der Assoziation wieder auftauchen:

Klasse Software < ActiveRecord::Base

has_one :document, :as => :wpl_article

Ende

Klasse Hardware < ActiveRecord::Base

has_one :document, :as => :wpl_article

Ende

Klasse Research < ActiveRecord::Base

has_one :document, :as => :wpl_article

Ende

The Database Columns: (association_name)_type – Stores the type for

polymorphe Assoziationen.

Klasse CreateDocuments < ActiveRecord::Migration

auf jeden Fall ändern

create_table :documents do |t|

t.string :name

t.integer :wpl_article_id # as we have mentioned “belongs_to

:wpl_article, :polymorphic => true” in document model . This is a

Konvention des Schemas, dass Verbandsname_Typ und

association_name_id will be accordingly “wpl_article”.

t.string :wpl_article_type

Ende

Ende

Ende

Software, Hardware und Forschung haben ein Dokument über die polymorphe Assoziation wpl_article Hier können wir sehen, wie das Modell funktioniert. Das Dokument ist über wpl_article mit den drei Modellen Software, Hardware und Forschung in einer einzigen Verknüpfung verknüpft, was beim Erreichen der Verknüpfung hilft.

Entwicklungsumgebung wird geladen (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, software)

=> #<Document id: 1, wpl_article_type: ‘Software’, wpl_article_id: 1,

name: “Worldcup”>

=> wahr

2.0.0-p247 :004 > Software.last.document.name

=> “Worldcup”

2.0.0-p247 :005 >Dokument.last

=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:

“Worldcup”>

2.0.0-p247 :006 >Document.last.wpl_article

Es ruft den Recoed basierend auf wpl_article_id und wpl_article_type ab

Railscarma bietet End-to-End-Ruby-on-Rails-Lösungen für die Entwicklung, Bereitstellung, Verwaltung, Überwachung und Unterstützung Ihrer Apps.

RailsCarma arbeitet von Anfang an an der Anwendung von Ruby und bietet Ihnen den Vorteil seiner bahnbrechenden Expertise, um Ihnen dabei zu helfen, schnelle und vereinfachte Geschäftslösungen zu erhalten.

Mehr lesen : 

Nehmen Sie Kontakt mit uns auf.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

German
English
English
Japanese
German
French
Spanish

WhatsApp uns

Beenden Sie die mobile Version