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
class Song < ApplicationRecord
has_many
class Product < ApplicationRecord
has_many