Blog Rubynetti

Polimorfismo con Ruby On Rails.

La potenza di un dato polimorfico è decisamente elevata perché permette di agganciare un dato ad un altro senza vincoli di dipendenza.

Nel mio caso su https://significatocanzone.it è possibile commentare tutta una serie di risorse.
In prima battuta, per velocità di sviluppo, avevo creato delle colonne come "song_id" e "annotation_id" sulla tabella dei commenti.
Ad un certo punto dato l'elevato numero di posti dove volevo inserire la possibilità di contribuire con dei commenti ho astratto il concetto attraverso il sistema polimorfico.

Per avere un sistema polimorfico è sufficiente aggiungere due colonne:

- commentable_id
- commentable_type

Il primo rappresenta l'id della risorsa esterna (ad esempio l'id di una canzone) mentre il secondo rappresenta la tipologia di tabella a cui si fa riferimento (ad esempio Song).

Rails una volta seguita questa impostazione pone di seguire la seguente convenzione:

class Comment < ApplicationRecord
belongs_to , polymorphic: true end

class Song < ApplicationRecord
has_many , as: end

class Product < ApplicationRecord
has_many , as: end

Chi siamo?

Rubynetti è una squadra di designer, sviluppatori e programmatori specializzata in applicazioni web. Il nostro focus è portare valore e automazione nei processi umani e aziendali attraverso l'uso delle tecnologie del web.

Operiamo da più di 20 anni nel settore e siamo specializzati su Vue.js, Nuxt, Rails e React.

Lavoriamo per lo più da Venezia centro storico.

Contatti

Se hai bisogno di una mano per portare avanti o creare dal nulla un progetto digitale siamo a disposizione.