Ruby on Rails - Record attivi

Rails Active Record è il layer Object / Relational Mapping (ORM) fornito con Rails. Segue da vicino il modello ORM standard, che è il seguente:

  • tabelle mappate alle classi,
  • righe mappate su oggetti e
  • colonne mappate agli attributi dell'oggetto.

Rails Active Records fornisce un'interfaccia e un collegamento tra le tabelle in un database relazionale e il codice del programma Ruby che manipola i record del database. I nomi dei metodi Ruby vengono generati automaticamente dai nomi dei campi delle tabelle del database.

Ogni oggetto Active Record ha CRUD (Create, Read, Update e Delete) metodi per l'accesso al database. Questa strategia consente progetti semplici e mappature dirette tra tabelle di database e oggetti dell'applicazione.

Traduzione di un modello di dominio in SQL

Tradurre un modello di dominio in SQL è generalmente semplice, a patto di ricordare che è necessario scrivere SQL Rails-friendly. In termini pratici, devi seguire alcune regole:

  • Ogni entità (come il libro) ottiene una tabella nel database che prende il nome da essa, ma al plurale (libri).

  • Ciascuna di queste tabelle di corrispondenza delle entità ha un campo chiamato id , che contiene un numero intero univoco per ogni record inserito nella tabella.

  • Data l'entità x e l'entità y, se l'entità y appartiene all'entità x, la tabella y ha un campo chiamato x_id.

  • La maggior parte dei campi in qualsiasi tabella memorizza i valori per le proprietà semplici di quell'entità (qualsiasi cosa sia un numero o una stringa).

Creazione di file di record attivi (modelli)

Per creare i file Active Record per le nostre entità per l'applicazione della libreria, introdotti nel capitolo precedente, emettere il seguente comando dal livello superiore della directory dell'applicazione.

library\> rails script/generate model Book
library\> rails script/generate model Subject

Sopra rails generate model book comandi genera il codice automatico come di seguito -

Stai dicendo al generatore di creare modelli chiamati Libro e Soggetto per memorizzare istanze di libri e soggetti. Nota che stai usando le maiuscole Libro e Oggetto e stai usando la forma singolare. Questo è un paradigma di Rails che dovresti seguire ogni volta che crei un modello.

Quando si utilizza lo strumento di generazione, Rails crea il file del modello effettivo che contiene tutti i metodi univoci per il modello e le regole di business definite, un file di unit test per eseguire lo sviluppo basato sui test, un file di dati di esempio (chiamato fixtures) da utilizzare con gli unit test e una migrazione di Rails che semplifica la creazione di tabelle e colonne di database.

Oltre a creare molti altri file e directory, questo creerà file denominati book.rb e subject.rb contenente una definizione di scheletro in app/models directory.

Contenuto disponibile in book.rb -

class Book < ActiveRecord::Base
end

Contenuto disponibile in subject.rb -

class Subject < ActiveRecord::Base
end

Creazione di associazioni tra modelli

Quando si dispone di più di un modello nella propria applicazione binari, è necessario creare una connessione tra questi modelli. Puoi farlo tramite associazioni. Active Record supporta tre tipi di associazioni:

  • one-to-one- Una relazione uno a uno esiste quando un elemento ha esattamente uno di un altro elemento. Ad esempio, una persona ha esattamente un compleanno o un cane ha esattamente un proprietario.

  • one-to-many- Esiste una relazione uno-a-molti quando un singolo oggetto può essere membro di molti altri oggetti. Ad esempio, un soggetto può avere molti libri.

  • many-to-many - Una relazione molti-a-molti esiste quando il primo oggetto è correlato a uno o più di un secondo oggetto e il secondo oggetto è correlato a uno o più del primo oggetto.

Indichi queste associazioni aggiungendo dichiarazioni ai tuoi modelli: has_one, has_many, appartiene_to e has_and_belongs_to_many.

Ora, devi dire a Rails quali relazioni vuoi stabilire all'interno del sistema di dati della libreria. Per farlo, modifica book.rb e subject.rb in questo modo:

class Book < ActiveRecord::Base
   belongs_to :subject
end

Abbiamo utilizzato un soggetto singolare nell'esempio precedente, perché un libro può appartenere a un singolo soggetto.

class Subject < ActiveRecord::Base
   has_many :books
end

Abbiamo usato libri plurali qui, perché un soggetto può avere più libri.

Implementazione di convalide sui modelli

L'implementazione delle validazioni viene eseguita in un modello Rails. I dati che stai inserendo nel database sono definiti nel modello Rails effettivo, quindi ha senso definire solo quali dati validi comportano nella stessa posizione.

Le convalide sono:

  • Il valore del campo del titolo non deve essere NULL.
  • Il valore del campo del prezzo deve essere numerico.

Aperto book.rb nel app\model subdiractory e inserire le seguenti convalide:

class Book < ActiveRecord::Base
   belongs_to :subject
   validates_presence_of :title
   validates_numericality_of :price, :message=>"Error Message"
end
  • validates_presence_of - protegge i campi "NOT NULL" dall'input dell'utente mancante.

  • validates_numericality_of - impedisce all'utente di inserire dati non numerici.

Oltre alle convalide di cui sopra, ci sono altre convalide comuni. Controlla la Guida rapida per Rails .

Cosa c'è dopo?

Nel prossimo capitolo impareremo Rails Migration, che ti permette di usare Ruby per definire le modifiche allo schema del tuo database, rendendo possibile l'uso di un sistema di controllo delle versioni per mantenere le cose sincronizzate con il codice reale.