-
Notifications
You must be signed in to change notification settings - Fork 0
Database Schema
BillTheDev edited this page Mar 3, 2022
·
8 revisions
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
username |
string | null: false, unique, index |
email |
string | null: false, unique, index |
password_digest |
string | null: false |
session_token |
string | null: true, unique, index |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude:playlists,likes,liked_songs,liked_playlists,liked_artists,liked_albums
has_many :liked_songs,
through: :likes,
source: :likeable,
source_type: :Song
has many :playlists,
primary_key: :id,
foreign_key: :creator_id,
class_name: :Playlist| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
name |
string | null: false, unique, index |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude:artists
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
name |
string | null: false, unique, index |
genre_id |
integer | null: false, foreign key |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude:albums -
belongs_toinclude:genre
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
name |
string | null: false, unique, index |
year |
integer | null: false |
artist_id |
integer | null: false, index, foreign key |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude:songs -
belongs_toinclude:artist
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
title |
string | null: false, index |
album_id |
string | null: false, index, foreign key |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude: -
belongs_toinclude:album
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
title |
string | null: false, unique, index |
creator_id |
integer | null: false, foreign key |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
has_manyinclude:playlists_songs -
belongs_toinclude:creator -> user has_many :songs, through: :playlists_songs
| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
playlist_id |
integer | null: false, foreign key |
song_id |
integer | null: false, foreign_key |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
belongs_toinclude:playlists,songs
Playlist.find(1).songsSELECT * FROM songs
INNER JOIN playlists_songs ON playlists_songs.song_id = songs.id
where playlists_songs.playlist_id = 1| column name | data type | detail |
|---|---|---|
id |
integer | null: false, primary key |
user_id |
integer | null: false, foreign key |
likeable_id |
integer | null: false, foreign_key |
likeable_type |
string | null: false |
created_at |
datetime | null: false |
updated_at |
datetime | null: false |
-
belongs_toinclude:user,likeable -
belongs_to :likeable, polymorphic: true