Ruby on Rails, un framework per applicazioni web eccezionalmente produttivo, è ottimizzato per il piacere dei programmatori e un output sostenibile. Privilegia la convenzione rispetto alla configurazione e quindi ti consente di scrivere codice bello senza preoccuparti troppo della conformazione.
C'è una domanda crescente di Rubino sui binari grazie alla sua velocità e agilità nella creazione di applicazioni con maggiore produttività e tempi di consegna ridotti.
Le associazioni di record attive sono una delle funzionalità più importanti di Rails. L'associazione polimorfica fa parte di queste associazioni. Con l'associazione polimorfica, un modello può appartenere a più di un altro modello, su un'unica associazione.
Perché abbiamo bisogno di associazioni tra modelli? Perché rendono le operazioni comuni più semplici e facili nel codice. Con le associazioni Active Record, possiamo semplificare queste – e altre – operazioni dicendo in modo dichiarativo a Rails che esiste una connessione tra i due modelli.
In Rails, un associazione è una connessione tra due modelli Active Record. Le associazioni vengono implementate utilizzando chiamate in stile macro, in modo da poter aggiungere in modo dichiarativo funzionalità ai modelli. Ad esempio, dichiarando che un modello appartiene a un altro, incarichi Rails di mantenere le informazioni di chiave primaria-chiave esterna tra le istanze dei due modelli e ottieni anche una serie di metodi di utilità aggiunti al tuo modello. Rails supporta sei tipi di associazioni:
Vediamo come implementarlo. Per prima cosa dovremo creare il modello di documento.
rails g model Nome documento:string wpl_article_id:integer
wpl_article_type:string
classe Documento < ActiveRecord::Base
appartiene_a :wpl_article, :polymorphic => true
FINE
L'interfaccia:
Utilizzando un'associazione polimorfica, dobbiamo definire solo un singolo appartiene_a e aggiungere una coppia di colonne correlate alla tabella del database sottostante. Da quel momento in poi, qualsiasi classe nel nostro sistema può avere documenti allegati ad essa (che diventerebbero wpl_article) senza bisogno di alterare lo schema del database o il modello Document stesso.
Non c'è una classe (o modulo) wpl_article nella nostra applicazione. Abbiamo chiamato l'associazione :wpl_article perché descrive accuratamente l'interfaccia degli oggetti che verranno associati in questo modo. Il nome
:wpl_article riapparirà dall'altra parte dell'associazione:
classe Software < ActiveRecord::Base
has_one :document, :as => :wpl_article
FINE
classe Hardware < ActiveRecord::Base
has_one :document, :as => :wpl_article
FINE
classe Ricerca < ActiveRecord::Base
has_one :document, :as => :wpl_article
FINE
Le colonne del database: (association_name)_type – Memorizza il tipo per
associazioni polimorfiche.
classe CreateDocuments < ActiveRecord::Migration
sicuramente cambiare
create_table :i documenti fanno |t|
t.stringa:nome
t.integer :wpl_article_id # come abbiamo menzionato “appartiene_a
:wpl_article, :polymorphic => true” nel modello di documento. Questo è un
convenzione dello schema che associazione_nome_tipo e
Association_name_id sarà di conseguenza "wpl_article".
t.string:wpl_article_type
FINE
FINE
FINE
Software, Hardware e Ricerca hanno un documento tramite associazione polimorfica wpl_article Qui possiamo vedere come modellare. Il documento è associato a tre modelli di software, hardware e ricerca in un'unica associazione tramite wpl_article che aiuta a realizzare l'associazione.
Caricamento dell'ambiente di sviluppo (Rails 4.1.1)
2.0.0-p247 :001 > document = Document.create(nome: 'Coppa del Mondo)
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
“Coppa del Mondo”>
2.0.0-p247 :002 > software = Software.create(nome: 'cricinfo.com')
=> #
2.0.0-p247 :003 > document.update_attribute(:wpl_article, software)
=> # <Document id: 1, wpl_article_type: ‘Software’, wpl_article_id: 1,
nome: “Coppa del Mondo”>
=> vero
2.0.0-p247 :004 > Software.ultimo.nome.documento
=> “Coppa del Mondo”
2.0.0-p247 :005 >Ultimo.documento
=> # <Document id: 1, wpl_article_type: nil, wpl_article_id: nil, name:
“Coppa del Mondo”>
2.0.0-p247 :006 >Documento.ultimo.wpl_articolo
recupererà il recoed in base a wpl_article_id e wpl_article_type
Railscarma fornisce soluzioni Ruby on Rails end-to-end dallo sviluppo, distribuzione, gestione, monitoraggio e supporto delle tue app.
Lavorando sull'applicazione Ruby fin dalle sue fasi nascenti, RailsCarma ti offre il vantaggio della sua esperienza pionieristica per aiutarti a ottenere soluzioni aziendali rapide e semplificate.
Per saperne di più :
- Comprensione del plugin Asset Pipeline
- Le basi della creazione e dell'utilizzo dei moduli in Rails
- Un modo semplice per aumentare le prestazioni della tua app Rails
- Applicazioni scalabili con connessioni multiple a database